Skip to content

Commit 4bdd29d

Browse files
committed
Remove use of eval on supported platforms
1 parent 6d59c85 commit 4bdd29d

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

index.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -421,13 +421,26 @@ function wrapfunction (fn, message) {
421421

422422
site.name = fn.name
423423

424-
// eslint-disable-next-line no-new-func
425-
var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',
426-
'"use strict"\n' +
427-
'return function (' + args + ') {' +
428-
'log.call(deprecate, message, site)\n' +
429-
'return fn.apply(this, arguments)\n' +
430-
'}')(fn, log, this, message, site)
424+
var deprecatedfn;
425+
var self = this;
426+
if (Object.defineProperty) {
427+
deprecatedfn = function() {
428+
"use strict";
429+
log.call(self, message, site);
430+
return fn.apply(this, arguments);
431+
};
432+
Object.defineProperty(deprecatedfn, 'length', { value: fn.length });
433+
Object.defineProperty(deprecatedfn, 'name', { value: fn.name });
434+
}
435+
if (!deprecatedfn || deprecatedfn.length !== fn.length || deprecatedfn.name !== fn.name) {
436+
// eslint-disable-next-line no-new-func
437+
var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',
438+
'"use strict"\n' +
439+
'return function (' + args + ') {' +
440+
'log.call(deprecate, message, site)\n' +
441+
'return fn.apply(this, arguments)\n' +
442+
'}')(fn, log, this, message, site)
443+
}
431444

432445
return deprecatedfn
433446
}

0 commit comments

Comments
 (0)