Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
This open source project is sorting arrays in a natural way. Assume you have an string array like this here
["init30", "init20", "init200"]
If you are sorting this in ruby with ".sort" you will get this result
["init20", "init200", "init30"]
Because the default sort method does not recognize the numbers in the string. The NaturalSorter will return this result.
["init20", "init30", "init200"]
You should add this line to your Gemfile
gem 'naturalsorter', '3.0.22'
and run this command in your app root directory
bundle install
This project has a lot of test cases and a test coverage above 90%. To run the tests you need to have installed Ruby 2.X. To install the test dependencies run this in the root directory:
bundle install
To execute the tests run this in the root directory:
rspec
This fork contains some special algorithms to sort version numbers in a natural order. This project is used at https://www.versioneye.com to show versions of selected open source projects.
These 2 methods are sorting a simple array of Strings. The name of the methods and the parameters are self explained.
Naturalsorter::Sorter.sort(array, caseinsensitive = false, asc = true)
And this here is for more advanced sorting. Where you can put in a array of objects and the method which should called on every object for comparison.
Naturalsorter::Sorter.sort_by_method(array, method, caseinsensitive = false, asc = true)
These methods are based on a different algorithm. Especially optimized for sorting version strings.
Naturalsorter::Sorter.sort_version(array, asc = true)
This here is again for an array with objects. Especially optimized for sorting version strings.
Naturalsorter::Sorter.sort_version_by_method(array, method, asc = true )
Get the newest version from the both given.
Naturalsorter::Sorter.get_newest_version(first, second)
Is a bigger than b?
Naturalsorter::Sorter.bigger?(a, b)
Is a bigger than b or equal?
Naturalsorter::Sorter.bigger_or_equal?(a, b)
Is a smaller than b?
Naturalsorter::Sorter.smaller?(a, b)
Is a smaller than b or equal?
Naturalsorter::Sorter.smaller_or_equal?(a, b)
This is for the Ruby GEM notation '>'. For example '>1.1' fits '1.2' and '1.9' and '1.14'. But not 2.0.
The parameter version would be for example '>1.1' and the parameter newest_version would be the
current newest version of the GEM, for example "2.0". The method will return false in this case
because '>1.1' doesn't fit anymore the newest version.
Naturalsorter::Sorter.is_version_current?(version, newest_version)
After the installation you can use it like this:
Naturalsorter::Sorter.sort(["a400", "a5", "a1"], true)
it will return the array ["a1", "a5", "a400"]. The second parameter is for "caseinsensitive".
If you have more advanced objects you want to sort, you should use the second method. Assume you have a Class User with 3 attributes: "firstname", "lastname", "age" and you want to sort an array of class Users by "firstname".
Naturalsorter::Sorter.sort_by_method(users, "firstname", true)
Isn't that awesome?
The next methods are based on my own implementation, optimized for sorting version strings like "1.1, 1.4, 1.10"
Naturalsorter::Sorter.sort_version(["1.10", "1.1", "1.2"])
will return the array ["1.1", "1.2", "1.10"]
The first 4 methods in this library are internal based on the natcmp implementation from Alan Davies. All glory to him for his awesome work.
FAQs
Unknown package
We found that naturalsorter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers 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
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.