Research
Recent Trends in Malicious Packages Targeting Discord
The Socket research team breaks down a sampling of malicious packages that download and execute files, among other suspicious behaviors, targeting the popular Discord platform.
array-patch
Advanced tools
Readme
When given two arrays, this module creates patches that let you modify the first
array into the second one. This is especially useful for HTTP PATCH
methods (when
you only want to send the changes) or just to get a overview of what changed between
two given arrays.
const { createPatch, applyPatch } = require('array-patch')
var arr1 = [1, 2, 3, 4, 5]
var arr2 = [1, 3, 4, 6]
var patch = createPatch(arr1, arr2)
console.log(applyPatch(arr1, patch))
// => [1, 3, 4, 6]
Applying a produced patch always transforms the first array into the second. If you find a case where the resulting patched array is not equal to the given second array, please file an issue.
compare
functionThis module works by first building a list of unchanged couples using
object-hash
. This works very well for most cases
but imagine the following scenario:
var arr1 = ['foo', 'bar', 'baz']
var arr2 = ['foo', 'blub', 'bar1', 'baz']
Visibly it's clear that we inserted a new entry 'blub' into the second array and changed the value of the entry 'bar' to 'bar1'. But because the hashes obviously change when the value changes, the result in this case would be that we have a change from 'bar' to 'blub' and a new entry 'bar1'.
To catch those unnecessary changes you can give a compare
function. This will
be applied for the cases where it's not entirely clear and there are multiple
possible candidates.
The arguments for the function will be the value from the initial array and the possible value from the second array. The function must return a numerical value representing the similarity of the two values.
This example can be implemented like the following:
var arr1 = [1, 2, 3, 4]
var arr2 = [1, 5, 2, 4]
var patch = createPatch(arr1, arr2, (val1, val2) => {
return val2 / val1
})
console.log(patch)
// => [ { type: 'insertion', index: 1, value: 5 },
// { type: 'deletion', index: 2 } ]
For a text array you could use similarity
like the following:
var similarity = require('similarity')
var arr1 = ['foo', 'bar', 'baz']
var arr2 = ['foo', 'blub', 'bar1', 'baz']
var patch = createPatch(arr1, arr2, similarity)
console.log(patch)
// => [ { type: 'insertion', index: 0, value: 'blub' },
// { type: 'change', index: 1, value: 'bar1' } ]
This module runs on node >= 8
and modern browsers using Browserify
or Webpack.
The tests are implemented in tests/
using tape. Run them with npm test
.
If you find any issues, please file them on the Github repo. If
you submit pull requests, please make sure that the tests (npm test
) pass.
FAQs
Create patch diffs for arrays
We found that array-patch 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.
Research
The Socket research team breaks down a sampling of malicious packages that download and execute files, among other suspicious behaviors, targeting the popular Discord platform.
Security News
Socket CEO Feross Aboukhadijeh joins a16z partners to discuss how modern, sophisticated supply chain attacks require AI-driven defenses and explore the challenges and solutions in leveraging AI for threat detection early in the development life cycle.
Security News
NIST's new AI Risk Management Framework aims to enhance the security and reliability of generative AI systems and address the unique challenges of malicious AI exploits.