Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
preffy-extend
Advanced tools
preffy-extend
is based on the classic extend() method from jQuery, but allows for certain types to be preferred, and not replace others.
This package is available on npm as: preffy-extend
npm install preffy-extend
Syntax: prefex ( preferred
, [deep
], target
, object1
, [objectN
] )
Extend one object with one or more others, returning the modified object.
Keep in mind that the target object will be modified, and will be returned from prefex(). If you don't want to modify the target, set the target to an empty object ({}
), and include the others after.
If a boolean true is specified as the second argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). Deep copies receive the same preferred array as the original. Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
preferred
Array
The listing of types to prefer (see below).deep
Boolean (optional)target
Objectobject1
ObjectobjectN
Object (Optional)The preferred array should be given like this: ['object','string']
. This means that properties of type object
will replace anything (have weight of 1), type string
replaces anything except for objects (weight 0), and anything else has weight -1. In other words, the weights are the index of the typeof
in the array, reversed.
typeof
does)Please report any others in the issue tracker.
prefex(['number'],{a:1,b:2,c:3},{d:4,a:'a'}) // { a: 1, b: 2, c: 3, d: 4 }
prefex([''],{a:1,b:2,c:3},{d:4,a:'a'}) // { a: 'a', b: 2, c: 3, d: 4 }
prefex(['object','string'],true,{a:1,b:'b',c:{d:4,e:'e'}},{a:'a',b:2,c:{d:true,e:false}}) // { a: 'a', b: 'b', c: { d: true, e: 'e' } }
The index.js
file in preffy-extend
can be included in client-side scripting as well with no problem. I simply recommend renaming it.
preffy-extend
is licensed under the [MIT License][3].
Credit to the jQuery authors for creating the original.
jQuery version ported to Node.js by Stefan Thomas with contributions by Jonathan Buchanan and Jordan Harband.
Extended by Scimonster to support preferential types.
FAQs
A version of the extend package that supports preferring types
We found that preffy-extend 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.