Helpers
IntentJS comes packed with helper methods which you can use to abstract many trivial tasks from your main piece of code.
IntentJS provides the following helpers
Available Methods
Arrays
Objects
Numbers
Strings
Array Helper Methods
All of the array helpers are exported from import { Arr } from '@intentjs/core/helpers'
collapse
You can use Arr.collapse method to collapse a nested array into a single level.
Arr.collapse(['a', ['b', ['c'], 1], 2]);
// [ 'a', 'b', 'c', 1, 2 ]except
The Arr.except is a method which you can use to remove some index, or keys from an array of objects.
const goats = [
{ name: 'Saina Nehwal', sport: 'Badminton' },
{ name: 'Sunil Chetri', sport: 'Football' },
{ name: 'Rohit Sharma', sport: 'Cricket' },
{ name: 'Virat Kohli', sport: 'Cricket' },
];
Arr.except(goats, ['*.sport']);
/**
[
{ name: 'Saina Nehwal' },
{ name: 'Sunil Chetri' },
{ name: 'Rohit Sharma' },
{ name: 'Virat Kohli' }
]
*/
Arr.except(goats, ['2.sport'])
/**
[
{ name: 'Saina Nehwal', sport: 'Badminton' },
{ name: 'Sunil Chetri', sport: 'Football' },
{ name: 'Rohit Sharma' },
{ name: 'Virat Kohli', sport: 'Cricket' }
]
*/pick
Unlike Arr.except, you can use Arr.pick method to only pick selected indices, keys from an array.
const goats = [
{ name: 'Saina Nehwal', sport: 'Badminton' },
{ name: 'Sunil Chetri', sport: 'Football' },
{ name: 'Rohit Sharma', sport: 'Cricket' },
{ name: 'Virat Kohli', sport: 'Cricket' },
];
Arr.pick(goats, ['*.name']);
/**
[
{ name: 'Saina Nehwal' },
{ name: 'Sunil Chetri' },
{ name: 'Rohit Sharma' },
{ name: 'Virat Kohli' }
]
*/
Arr.pick(goats, ['0.name', '1.sport', '2.name', '3.sport']);
/**
[
{ name: 'Saina Nehwal' },
{ sport: 'Football' },
{ name: 'Rohit Sharma' },
{ sport: 'Cricket' }
]
*/random
The Arr.random method shuffles the elements of an array.
const goats = [
{ name: 'Saina Nehwal', sport: 'Badminton' },
{ name: 'Sunil Chetri', sport: 'Football' },
{ name: 'Rohit Sharma', sport: 'Cricket' },
{ name: 'Virat Kohli', sport: 'Cricket' },
];
Arr.random(goats);
/**
[
{ name: 'Virat Kohli', sport: 'Cricket' },
{ name: 'Rohit Sharma', sport: 'Cricket' },
{ name: 'Saina Nehwal', sport: 'Badminton' },
{ name: 'Sunil Chetri', sport: 'Football' }
]
*/toObj
The Arr.toObj method transforms the array to an object.
const array = [
["The Alchemist", "Paulo Coelho"],
["Shoe Dog", "Phil Knight"],
];
const obj = Arr.toObj(array, ["book", "author"]);
/**
[
{ book: 'The Alchemist', author: 'Paulo Coelho' },
{ book: 'Shoe Dog', author: 'Phil Knight' }
]
*/Object Helper Methods
All of the Object helpers are exported from import { Obj } from '@intentjs/core/helpers'
dot
The Obj.dot converts a nested object to dot notation object
const obj = {
name: { fullName: "Vinayak", lastName: "Sarawagi" },
address: { country: "India", code: "IN" },
};
const dotObj = Obj.dot(obj);
/**
{
'name.fullName': 'Vinayak',
'name.lastName': 'Sarawagi',
'address.country': 'India',
'address.code': 'IN'
}
*/entries
The Obj.entries method converts a deeply nested object into a [key, value] array. If the object is nested, it would automatically convert the obj to dot notation.
const obj = {
id: 1,
name: { fullName: "Vinayak", lastName: "Sarawagi" },
address: { country: "India", code: "IN" },
};
const objEntries = Obj.entries(obj);
/**
[
[ 'id', 1 ],
[ 'name.fullName', 'Vinayak' ],
[ 'name.lastName', 'Sarawagi' ],
[ 'address.country', 'India' ],
[ 'address.code', 'IN' ]
]
*/except
The Obj.except method helps you quickly get a new object except the list of keys that you specify.
const obj = {
firstName: 'Vinayak',
lastName: 'Sarawagi',
email: '[email protected]',
wishlist: [
{ id: 1, name: 'Product 1' },
{ id: 2, name: 'Product 2' },
{ id: 3, name: 'Product 3' },
],
address: {
line1: 'Somewhere',
line2: 'Far Far Away',
city: 'Delhi',
country: { code: 'IN', name: 'India' },
},
};
Obj.except(obj, ['firstName', 'lastName', 'wishlist.*.id']);
/**
{
email: '[email protected]',
wishlist: [
{ name: 'Product 1' },
{ name: 'Product 2' },
{ name: 'Product 3' }
],
address: {
line1: 'Somewhere',
line2: 'Far Far Away',
city: 'Delhi',
country: { code: 'IN', name: 'India' }
}
}
*/get
The Obj.get method can be used to fetch a value from an object by using dot notation.
const obj = {
firstName: 'Vinayak',
lastName: 'Sarawagi',
email: '[email protected]',
wishlist: [
{ id: 1, name: 'Product 1' },
{ id: 2, name: 'Product 2' },
{ id: 3, name: 'Product 3' },
],
address: {
line1: 'Somewhere',
line2: 'Far Far Away',
city: 'Delhi',
country: { code: 'IN', name: 'India' },
},
};
Obj.get(obj, 'firstName');
// Vinayak
Obj.get(obj, 'wishlist.0.name');
// Product 1
Obj.get(obj, 'address.country.name');
// IndiaisEmpty
To check if an object is empty, you can make use of Obj.isEmpty method.
Obj.isEmpty({ name: 'Intent' });
// false
Obj.isEmpty({});
// true
Obj.isEmpty([]);
// trueisNotEmpty
Incase you want to check if an object is not empty, Obj.isNotEmpty can help you.
Obj.isNotEmpty({ name: 'Intent' });
// true
Obj.isNotEmpty({});
// false
Obj.isNotEmpty([]);
// falsepick [#obj-pick]
There will be cases where you would like to access multiple keys at once using dot notation. To do so you can use Obj.pick method.
const obj = {
firstName: "Vinayak",
lastName: "Sarawagi",
email: "[email protected]",
wishlist: [
{ id: 1, name: "Product 1" },
{ id: 2, name: "Product 2" },
{ id: 3, name: "Product 3" },
],
address: {
line1: "Somewhere",
line2: "Far Far Away",
city: "Delhi",
country: { code: "IN", name: "India" },
},
};
Obj.pick(obj, ["firstName", "lastName", "wishlist.*.id"]);
/**
* {
* firstName: 'Vinayak',
* lastName: 'Sarawagi',
* wishlist: [ { id: 1 }, { id: 2 }, { id: 3 } ]
* }
*/Number Helper Methods
All of the number helpers are exported from import { Num } from '@intentjs/core/helpers'
abbreviate
The abbreviate method returns the human-readable format of the provided numerical value.
import { Num } from '@intentjs/core/helpers';
Num.abbreviate(1000);
// 1K
Num.abbreviate(1200, { precision: 2 });
// 1.2K
Num.abbreviate(1200, { locale: "hi" });
// 1.2 हज़ारclamp
Clamp helper allows you to ensure that the given number remains within the specified range. f the number is lower than the minimum, the minimum value is returned. If the number is higher than the maximum, the maximum value is returned:
Num.clamp(80, 20, 100);
// 80
Num.clamp(10, 20, 100);
// 20
Num.clamp(5, 20, 100);
// 20
Num.clamp(110, 20, 100);
// 100currency
Currency helper returns the currency format of a given number.
Num.currency(12300);
// ₹12,300.00
Num.currency(12300, { currency: "USD" });
// $12,300.00fileSize
The fileSize method returns the file size representation of the number passed.
Num.fileSize(1000);
// 1KB
Num.fileSize(1024);
// 1KB
Num.fileSize(1024 * 1024 * 1.5, { precision: 2 });
// 1.57MBforHumans
forHumans method returns the expanded human-readable format of the given number.
Num.forHumans(100);
// 100
Num.forHumans(1200);
// 1.2 thousand
Num.forHumans(1230, { precision: 2 });
// 1.23 thousand
Num.forHumans(1230, { locale: "en" });
// 1,2 millierformat
The format method formats the number into the given locale string.
Num.format(1000);
// 1,000
Num.format(1000, { locale: "fr" });
// 1 000
Num.format(1200);
// 1,200ordinal
Ordinal method returns the ordinal format of a number.
Num.ordinal(1);
// 1st
Num.ordinal(2);
// 2nd
Num.ordinal(3);
// 3rd
Num.ordinal(20);
// 20thpercentage
Num.percentage method formats the given value into a percentage string.
Num.percentage(10);
// 10.0%
Num.percentage(10, { locale: "fr" });
// 10,0 %
Num.percentage(10.123, { precision: 2 });
// 10.12%String Helper Methods
All of the string helpers are exported from import { Str } from '@intentjs/core/helpers'
after
The Str.after method returns the string after the specified substr.
const sentence = "The quick brown fox jumps over a lazy dog.";
const result = Str.after(sentence, "fox");
// jumps over a lazy dog.before
The Str.after method returns the string before the specified substr, excluding the subtr.
const sentence = "The quick brown fox jumps over a lazy dog.";
const result = Str.before(sentence, "fox");
// The quick brownbetween
The Str.between method returns the string present between the specified start and end.
const sentence = "The quick brown fox jumps over a lazy dog.";
const result = Str.between(sentence, "brown", "jumps");
// foxcamel
The Str.camel method converts given string into it's camelCase representation.
const example0 = "intent_js";
Str.camel(example0); // intentJs
const example1 = "quick brown fox jumps";
Str.camel(example1); // quickBrownFoxJumps
const example2 = "Hey_there, What's up?";
Str.camel(example2); // heyThereWhatSUpcontains
You can use Str.contains method to check if specified str is present in a given string.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.contains(sentence, "over"); // returns true
Str.contains(sentence, "over2"); // returns falsecontainsAll
If you want to search for all specified strs to be present in the given string, you can use Str.containsAll method.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.containsAll(sentence, ["fox", "dog"]); // returns true
Str.containsAll(sentence, ["fox", "whale"]); // returns falseendsWith
In cases where you want to check if given string ends with a substr, you can use Str.endsWith method.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.endsWith(sentence, "dog."); // returns trueheadline
Str.headline method converts the given string into HeadLine case. This also strips all special characters.
const sentence = "Is this real?";
Str.headline(sentence); // Is This Real?is
Str.is method can be used for pattern matching a substr with given string, or even for exact matching as well.
const str = "users:create";
Str.is(str, "users:create"); // true
Str.is(str, "*:create"); // true
Str.is(str, "admin"); // falseisEmail
Str.isEmail method validates if given string is an email or not.
Str.isEmail("[email protected]"); // true
Str.isEmail("tryintent.com"); // falseisJson
Str.isJson method validates if the given string can be parsed into JSON format or not.
Str.isJson('{"name": "Intent"}'); // true
Str.isJson('{"name": "Intent"'); // falseisUrl
Str.isUrl method checks if the given string is a valid URL or not.
Str.isUrl("https://tryintent.com"); // true
Str.isUrl("tryintent.com"); // true
Str.isUrl("docs.tryintent.com"); // true
Str.isUrl("http2://tryintent.com"); // falseisUlid
You can use Str.isUlid to verify if the given string obeys ULID format or not.
Str.isUlid("01ARZ3NDEKTSV4RRFFQ69G5FAV"); // true
Str.isUlid("admin"); // falsekebab
Str.kebab method converts the given string into kebab-case.
const example0 = "intent_js";
Str.kebab(example0); // intent-js
const example1 = "quick brown fox jumps";
Str.kebab(example1); // quick-brown-fox-jumps
const example2 = "Hey_there, What's up?";
Str.kebab(example2); // hey-there-what-s-uplcfirst
Str.lcfirst can be used to convert the first character to lowercase.
Str.lcfirst("INTENT"); // iNTENT
Str.lcfirst("Intent"); // intentlength
You can use Str.len to get the length of a given string.
Str.len("intent"); // 6
Str.len(undefined); // 0limit
If you want only n length of characters from a given string, you can use Str.limit method.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.limit(sentence, 15);
// The quick brown...
Str.limit(sentence, 15, "!!!");
// The quick brown!!!
Str.limit(sentence, 50);
// The quick brown fox jumps over a lazy dog.lower
Str.lower transforms the given string into lower case.
Str.lower("VINAYAK SARAWAGI");
// vinayak sarawagimask
You can use Str.mask method to mask a given string. First argument accepts a string, 2nd argument accepts the masked character, and the 3rd one accepts the number of characters which should be left as it is, the rest of it will be masked.
Str.mask("[email protected]", "*", 7);
// hi@tryi*********padBoth
You can use Str.padBoth method to pad your strings from both the ends with given char to a defined length.
Str.padBoth("intent", 10, "~");
// ~~intent~~padLeft
Similar to Str.padBoth, but if you want to just pad the left side of the string, you can use Str.padLeft method.
Str.padLeft("intent", 10, "~");
// ~~~~intentpadRight
Similar to Str.padBoth, but if you want to just pad the right side of the string, you can use Str.padRight method.
Str.padRight("intent", 10, "~");
// intent~~~~pluralize
The Str.plural method converts a given method to a plural form.
Str.pluralize('apple');
// apples
Str.pluralize('child');
// children
Str.pluralize('index');
// indices
Str.pluralize('alumnus');
// alumniremove
If you want to just remove certain characters from a given string, Str.remove can do that for you.
Str.remove("New OSS NodeJS Framework", "OSS ");
// New NodeJS Frameworkrepeat
Str.repeat method returns a new string with repeat string for x times.
Str.repeat("chug ", 5);
// chug chug chug chug chugreplace
The Str.replace method can be used to replace a given string with another string.
Str.replace('I hate intent!', 'hate', 'love');
// I love intent!
Str.replace('I Hate intent!', 'hate', 'love', true);
// I love intent!replaceArray
The Str.replaceArray method replaces the matching string sequentially with the string array.
const str = 'I will be there between ? and ?';
Str.replaceArray(str, '?', ['8:30', '9:30PM']);
// I will be there between 8:30 and 9:30PM;replaceFirst
The Str.replaceFirst method replaces only the first matching string with the replacement string.
const sentence = 'the quick brown fox jumps over the lazy dog.';
Str.replaceFirst(sentence, 'the', 'a');
// a quick brown fox jumps over a lazy dog.replaceLast
The Str.replaceLast method can be used to replace only the last matching string with the replacement string.
const sentence = 'the quick brown fox jumps over the lazy dog.';
Str.replaceLast(sentence, 'the', 'a');
// the quick brown fox jumps over a lazy dog.reverse
Str.reverse reverses the string.
Str.reverse("wtf! why reverse?");
// ?esrever yhw !ftwsingular
You can use Str.singular to convert a given word in a singular form.
Str.singular('apples');
// apple
Str.singular('children');
// child
Str.singular('indices');
// index
Str.singular('matrices');
// matrixslug
You can use Str.slug method to convert any string to a slug form.
const title = "How to get started with IntentJS? 🤨";
Str.slug(title);
// how-to-get-started-with-intent
Str.slug("hello there");
// hello-there
Str.slug("Hey_there, What's up?");
// hey-there-what-s-up
Str.slug("@@@@@@jell----fw fed");
// jell-fw-fedsnake
Str.snake transforms the given string into snake_case.
const title = "How to get started with IntentJS? 🤨";
Str.snake(title);
// how_to_get_started_with_intentstartsWith
If you want to check if any string starts with a substr or not.
Str.startsWith("A Product Stack Framework", "A Product");
// trueswap
You can use Str.swap method to swap multiple words with some other words.
Str.swap("Butter Chicken", { Butter: "Chilli", Chicken: "Paneer" });
// Chilli Paneertake
The Str.take method returns the specified number of chars from the beginning of the string.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.take(sentence, 9);
// The quicktitle
The Str.title converts the given string into Title format.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.title(sentence);
// The Quick Brown Fox Jumps Over A Lazy Dog.toBase64
The Str.toBase64 converts the string into base64 format.
const sentence = "The quick brown fox jumps over a lazy dog.";
Str.toBase64(sentence);
// VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIGEgbGF6eSBkb2cuucfirst
The Str.ucFirst returns the string with it's first character capitalized.
Str.ucfirst("hey intent");
// Hey intentwords
The Str.words method returns the words present in the given sentence. It can also ignore the special characters, and unicodes.
const sentence = "fox & dog";
Str.words("fox & dog");
// [ 'fox', '&', 'dog' ]
Str.words("fox@&@dog", true); // <- strips all special characters and unicodes
// [ 'fox', 'dog' ]
Str.words("fox🤨and🤨dog", true);
// [ 'fox', 'and', 'dog' ]wrap
The Str.wrap function wraps the strings in prefix and suffix.
Str.wrap(" Love ", "I", "Intent");
// I Love Intent