Security News
The Push to Ban Ransom Payments Is Gaining Momentum
Ransomware costs victims an estimated $30 billion per year and has gotten so out of control that global support for banning payments is gaining momentum.
prototypes
Advanced tools
Readme
Some common prototypes for node.js: string.startsWith(), object.countProperties() and more. Functions are added using Object.defineProperty() to avoid polluting new objects.
Simply install using npm:
npm install prototypes
Or add to the dependencies of your project in your package.json
.
This package adds some useful prototypes to String. To use in your package, you just have to require prototypes:
require('prototypes');
You do not need to assign the result to any variable, and in fact JSHint (and similar code checkers) may complain about an unused variable if you do this:
var prototypes = require('prototypes');
This last form is only required if you use any of the exported functions, which should be seldom the case.
This package is published under the MIT license. You can integrate it in any commercial, closed software and/or make changes to the code with complete liberty. If you send your changes back to the main repo we will be grateful, but it is by no means required.
The following string prototypes are provided.
Check that the current string starts with the given substring. Example:
'pepitus'.startsWith('pep');
\=> true
Check that the current string ends with the given substring. Example:
'pepitus'.endsWith('tus');
\=> true
Return the piece of string until the argument is found; return the whole string if not found. Example:
'hi.there'.substringUpTo('.');
\=> 'hi'
Return the piece of string until the last occurrence of the argument; return the whole string if not found. Example:
'hi.there.you'.substringUpToLast('.');
\=> 'hi.there'
Return the piece of string starting with the argument; empty string if not found. Example:
'hi.there'.substringFrom('.');
\=> 'there'
Return the piece from the last occurrence of the argument; empty string if not found. Example:
'hi.there.you'.substringFromLast('.');
\=> 'you'
Find out if the string contains the argument at any position. Example:
'abcde'.contains('bcd');
\=> true
Find out if the string contains the argument at any position, ignoring case. Example:
'aBcDe'.contains('bCd');
\=> true
Replace all occurrences of a string with the replacement. Example:
'pepitus'.replaceAll('p', 'c');
\=> 'cecitus'
Repeat the given string a few times. Example:
'ab'.repeat(3);
\=> 'ababab'
Capitalize a string: first letter upper case, rest as is. Example:
'hello'.capitalize();
\=> 'Hello'
For objects some care must be taken before overwriting Object.prototype
:
otherwise it might break all code that does not check for hasOwnProperty().
See MDN help.
In this library all extensions are done using Object.defineProperty()
which does not pollute objects as the new properties are not enumerable.
Again, see MDN help.
Count the number of properties in an object. Does not count inherited properties: uses Object.keys(). Example:
{a: 'a'}.countProperties();
\=> 1
You can also pass a string or a function as a filter:
{hello: 'a'}.countProperties('ll');
\=> 1
{hello: 'a'}.countProperties(function(key) { return key.length == 5 });
\=> 1
Overwrite properties in the original with the given object. Example:
{a: 'a'}.overwriteWith({b: 'b'});
\=> {a: 'a', b: 'b'}
There are math functions in Math
, in Number.prototype
, exported isNumber
and even as globals, e.g. parseInt()
.
By default parseInt() requires a radix (or base), or it will recreate the radix itself: if the string starts with a leading zero, then it interprets that you are parsing an octal number.
// unsafe parseInt()
parseInt('010');
\=> 8
This library replaces the global function with a safe version that uses radix 10 unless told otherwise. The last person that wanted to convert octal with leading zeroes is probably programming in C anyway. Example:
parseInt('010');
\=> 10
The function isNumber() is based on this StackOverflow answer: it checks if the parameter is a number. Examples:
var prototypes = require('prototypes');
prototypes.isNumber(5);
\=> true
prototypes.isNumber('hi');
\=> false
Logarithm in base 10. Example:
Math.log10(10);
\=> 1
Convert a number in degrees to radians. Example:
var n = 180;
n.toRad();
\=> 3.141592653589793
Prototypes used to enhance regular expressions (the RegExp prototype). Can also be used with the syntax /.../.
Returns a new regular expression which is always global. Example:
'pepitus'.replace(/p/.makeGlobal(), 'c');
\=> 'cecitus'
Thanks to my current employer MediaSmart Mobile for their permission to reuse some of the prototypes we have cooked together.
Thanks to William Wicks for letting me (even encouraging me to) plunder his extensions library.
FAQs
Some common prototypes for node.js: string.startsWith(), object.countProperties() and more. Facilities for functional programming with objects: object.forEach(), object.filter(). Functions are added safely using Object.defineProperty().
We found that prototypes 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
Ransomware costs victims an estimated $30 billion per year and has gotten so out of control that global support for banning payments is gaining momentum.
Application Security
New SEC disclosure rules aim to enforce timely cyber incident reporting, but fear of job loss and inadequate resources lead to significant underreporting.
Security News
The Python Software Foundation has secured a 5-year sponsorship from Fastly that supports PSF's activities and events, most notably the security and reliability of the Python Package Index (PyPI).