Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
rename-function
Advanced tools
Rename a given function. Tries to be cross-platform and guaranteed. Useful when you want to preserve name of bound function. In bonus, allows passing context to the renamed function.
Rename a given function. Tries to be cross-platform and guaranteed. Useful when you want to preserve name of bound function. In bonus, allows passing context to the renamed function.
npm i rename-function --save
There's a couple of things that you should be aware off and make your attention, few scenarios - you can do few things with package like this - rename function, binding function with context and both together.
fn
to have name
instead of original name.TypeError
if given fn
not a function.fn
is given, it is returned without modifications - nothing done.fn
is given and falsey name
(meaning non-string) - just returns the fn
- nothing done.fn
is given and name
is same as original name - just returns the fn
- nothing done.fn
, name
and ctx
is given, and name
is as original - returns function with ctx
and same name.fn
and ctx
is given, then function remains the same - only ctx
is bound.Meaning, this package try to follow native behaviours. Because you can't do such thing
function zooparks () { return this }
var boundOne = renameFunction(zooparks, {foo: 'one'})
var boundTwo = renameFunction(boundOne, {foo: 'two'})
var boundZzz = renameFunction(boundTwo, {foo: 'zzz'})
console.log(boundZzz()) // => {foo: 'one'}
and expect boundZzz()
to return {foo: 'zzz'}
, it would be {foo: 'one'}
always. It's still a bit strange even to me, because of use the thing that I call "smart binding" with which I tried to solve this problem and will continue. Kinda strange, when debugging it seems it shows expected results. But in other hand that's the native behaviour, see this one:
function zooparks () { return this }
var boundOne = zooparks.bind({foo: 'one'})
var boundTwo = boundOne.bind({foo: 'two'})
var boundZzz = boundTwo.bind({foo: 'zzz'})
console.log(boundZzz()) // => {foo: 'one'}
For more use-cases see the tests
const renameFunction = require('rename-function')
Rename given
fn
withname
. If givenname
is same as old, then thefn
is just returned earlier, nothing more is done.
Params
fn
{Function}name
{String|Object}ctx
{Object}returns
{Function}: or throws TypeError
if fn
not a functionExample
var rename = require('rename-function')
var getName = require('get-fn-name')
var fn = rename(fixture () {}, 'abc')
console.log(getName(fn)) // => 'abc'
console.log(fn.name) // => 'abc'
// passing context
var bound = rename(fixture foo () { return this }, 'zoo', {a: 'b'})
console.log(bound()) // => {a: 'b'}
console.log(bound.name) // => 'zoo'
console.log(getName(bound)) // => 'zoo'
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.
FAQs
Rename a given function. Tries to be cross-platform and guaranteed. Useful when you want to preserve name of bound function. In bonus, allows passing context to the renamed function.
We found that rename-function demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.