Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View kevboutin's full-sized avatar

Kevin Boutin kevboutin

View GitHub Profile
@kevboutin
kevboutin / smsUtility.js
Created April 8, 2024 17:02
SMS Utility using Twilio
const twilio = require('twilio');
const TAG = 'smsUtility';
/**
* Send an SMS text message.
*
* Example response from Twilio:
* {
* "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
@kevboutin
kevboutin / emailUtility.js
Created April 8, 2024 16:57
SendGrid email utility
const sgMail = require('@sendgrid/mail');
sgMail.setTimeout(40000);
const TAG = 'emailUtility';
const DEFAULT_SENDER = 'donotreply@somedomain.com';
/**
* Send an email.
*
@kevboutin
kevboutin / groupArray.js
Created October 17, 2023 15:43
Group an array by object property
const groupBy = (arr, groupFn) => {
const grouped = {};
for (const obj of arr) {
const groupName = groupFn(obj);
if (!grouped[groupName]) {
grouped[groupName] = [];
}
grouped[groupName].push(obj);
}
return grouped;
@kevboutin
kevboutin / reverseString.js
Created October 17, 2023 15:40
Reverse a string
/* The old way:
const reverseString = (str) => {
let reversed = '';
for (let i = str.length - 1; i >= 0; i--) {
const ch = str[i];
reversed += ch;
}
return reversed;
};
const reverse = reverseString('javascript');
@kevboutin
kevboutin / compareArrays.js
Created October 17, 2023 15:38
Compare Arrays
const areEqual = (arr1, arr2) =>
arr1.sort().join(',') === arr2.sort().join(',');
const arr1 = [1, 2, 3, 4];
const arr2 = [3, 4, 1, 2];
const arr3 = [1, 2, 3];
console.log(areEqual(arr1, arr2)); // true
console.log(areEqual(arr1, arr3)); // false
@kevboutin
kevboutin / removeDuplicates.js
Created October 17, 2023 15:37
Remove duplicates from an array
const removeDuplicates = (arr) => [...new Set(arr)];
const arr = [1, 2, 3, 4, 5, 3, 1, 2, 5];
const distinct = removeDuplicates(arr);
console.log(distinct); // [1, 2, 3, 4, 5]
@kevboutin
kevboutin / mapToJson.js
Created October 17, 2023 15:36
Convert Map to JSON
const mapToJson = (map) => JSON.stringify(Object.fromEntries(map));
const map = new Map([
['user1', 'Alison'],
['user2', 'Kevin'],
['user3', 'James'],
]);
const json = mapToJson(map);
// {"user1":"Alison","user2":"Kevin","user3":"James"}
console.log(json);
@kevboutin
kevboutin / jsonToMap.js
Created October 17, 2023 15:35
Convert JSON to a Map
const jsonToMap = (json) => new Map(Object.entries(JSON.parse(json)));
const json = '{"user1":"Alison","user2":"Kevin","user3":"James"}';
const map = jsonToMap(json);
// Kevin
console.log(map.get('user2'));
// Map(3) { 'user1' => 'Alison', 'user2' => 'Kevin', 'user3' => 'James' }
console.log(map);
@kevboutin
kevboutin / snakeToCamelCasing.js
Last active October 17, 2023 15:33
Convert string in snake case to came case
const snakeToCamelCase = (s) =>
s.toLowerCase().replace(/(_\w)/g, (w) => w.toUpperCase().substr(1));
const str1 = 'string_manipulation';
const str2 = 'one_liner';
console.log(snakeToCamelCase(str1)); // stringManipulation
console.log(snakeToCamelCase(str2)); // oneLiner
@kevboutin
kevboutin / randomUuid.js
Created October 17, 2023 15:31
Generate a random UUID
/* This can be done by the uuid package, which is probably better than using Math.random(), but this is great for unit tests. */
const generateRandomUUID = (a) =>
a
? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)
: ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(
/[018]/g,
generateRandomUUID
);
console.log(generateRandomUUID()); // f138f635-acbd-4f78-9be5-ca3198c4cf34
console.log(generateRandomUUID()); // 8935bb0d-6503-441f-bb25-7bc685b5b5bc