Skip to content

Instantly share code, notes, and snippets.

View javierd79's full-sized avatar
🎯
Aiming high

Javier Diaz javierd79

🎯
Aiming high
  • Dataweb C.A
  • Zulia, Venezuela
  • 07:00 (UTC -04:00)
View GitHub Profile
@javierd79
javierd79 / useTimer.ts
Created March 27, 2023 05:50
useTimer hook to handle timer from Now to a end time.
import { useState, useEffect } from 'react';
import moment from 'moment';
type TimerHook = {
time: string;
stop: () => void;
};
const useTimer = (endTime: string): TimerHook => {
const duration = moment.duration(moment(endTime, 'HH:mm:ss').diff(moment(moment().format('HH:mm:ss'), 'HH:mm:ss')));
@javierd79
javierd79 / has.extensions.ts
Created January 7, 2023 00:39
Array prototype extension to get duplicate objects in an array
interface Array<T> {
has(key: string, value: any): [keyof T, any] | []
}
Array.prototype.has = function(key, value) {
return this.filter((item) => item[key] === value)
}
@javierd79
javierd79 / setDays.extensions.ts
Created January 6, 2023 20:01
Prototype - setDays
interface Date {
setDays(days: number): Date
}
Date.prototype.setDays = function(days: number) {
const date = new Date(this.valueOf())
date.setDate(date.getDate() + days)
return date
}
@javierd79
javierd79 / REGEXes.js
Last active October 3, 2022 03:15
REGEXes to use in JS vanilla and React Project
/* REGEXes */
const REGEX_INT = /^-?\d+$/;
const REGEX_EMAIL = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
const REGEX_PASSWORD = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/gm;
const REGEX_IPv4 = /\b(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))\b/ig;
const REGEX_IPv6 = /(([a-fA-F0-9]{1,4}|):){1,7}([a-fA-F0-9]{1,4}|:)/gm;
@javierd79
javierd79 / protectedRoutes.js
Last active October 2, 2022 18:42
control access in an APP with React
const permissions = {
Admin: ['/', '/users'],
undefined: ['/login'],
null: ['/login'],
};
const initialState = {
status: false,
};
@javierd79
javierd79 / concatArrays.js
Created October 2, 2022 18:31
Concat two different arrays
function concatArrays (firstArr, secondArr) {
return [...firstArr, ...secondArr]
}
concatArrays ([1,2,3], ["Hello world!", "Mondongo"])
// [ 1, 2, 3, 'Hello world!', 'Mondongo' ]
@javierd79
javierd79 / countDuplicate.js
Created September 24, 2022 21:17
Function to count how many elements are duplicates in an Array
const countDuplicate = (array) => {
let object = array.reduce((prev, cur) => ((prev[cur] = prev[cur] + 1 || 1), prev), {})
console.log(object);
}
countDuplicate(['test', 'test', 'test2'])
@javierd79
javierd79 / fakeBinary.js
Last active September 25, 2022 21:21
The function called fakeBinary receives as argument size(size) which is a number (integer) and must return a string of 1s and 0s with the indicated size.
let result = []
const REGEX_INT = /^-?\d+$/;
const isNumber = (value) => {
return REGEX_INT.test(value);
}
const fakeBinary = (param) => {
if (isNumber(param)){
@javierd79
javierd79 / date.js
Last active September 25, 2022 21:21
Snippet to get one day of the week every week in React.Js
export const everyWeek = (x) => {
let prev = new Date();
prev.setDate(prev.getDate() + (x+(7+prev.getDay())) % 7);
return prev
.toISOString()
.slice(0, 10)
.replace('T',' ');
}