Skip to content

Instantly share code, notes, and snippets.

@wjramos
wjramos / Hooks.js
Last active August 10, 2022 23:37
export default (() => {
let hooks = []
let currentIndex = 0
const render = Component => {
// Run effects
const component = Component()
component.render()
export function extractNodeText(node) {
if (typeof node === 'string') return node;
if (React.isValidElement(node)) {
const { messageKey, messagesMap } = node.props;
if (messageKey && messagesMap) {
return messagesMap[messageKey];
}
@wjramos
wjramos / ViewportTrigger.jsx
Last active November 13, 2018 18:31
Viewport Trigger
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
export default class ViewportTrigger extends PureComponent {
static propTypes = {
onViewportEnter: PropTypes.func,
onViewportLeave: PropTypes.func,
children: PropTypes.node,
threshold: PropTypes.number,
};
@wjramos
wjramos / fs-utils.js
Created May 25, 2018 00:16
file system utils
// *******************
// Filesystem utils
// *****************
export const isDirectory = source => fs.lstatSync(source).isDirectory();
export const removePath = (source, filePaths = []) => filePaths.map(filePath => filePath.replace(source, ''));
export const listDirFiles = source => fs.readdirSync(source).map(name => path.join(source, name));
export const listFiles = source => listDirFiles(source).filter(source => !isDirectory(source));
export const listDirs = source => listDirFiles(source).filter(isDirectory);
export const removeExtension = fileName => fileName.split('.')[0];
export const getFileName = filePath => removeExtension(filePath.split('/').pop());
const assert = require('assert');
const GREEN = '\x1b[32m';
const RED = '\x1b[31m';
const WHITE = '\x1b[37m';
class Test {
constructor() {
this.failures = [];
this.count = 0;
@wjramos
wjramos / test.js
Last active March 15, 2018 18:58
Dependency-less unit-testing
const assert = require('assert');
const GREEN = '\x1b[32m';
const RED = '\x1b[31m';
const WHITE = '\x1b[37m';
const printFailure = failure => console.error(`${RED}
❌ FAILURE: ${failure}`);
const printSuccess = success => console.log(`${GREEN}
@wjramos
wjramos / S3
Last active August 30, 2017 05:34
import AWS from 'aws-sdk';
const { AWS_REGION = 'us-east-1', NODE_ENV = 'development', AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY } = process.env;
const config = {
region: AWS_REGION,
accessKeyId: AWS_ACCESS_KEY_ID,
secretAccessKey: AWS_SECRET_ACCESS_KEY,
};
AWS.config.update(config);
export default class Cache {
constructor(ttl = 300000) { // 5 Minutes
this.ttl = ttl;
this.expirations = new Map();
this.cache = new Map();
}
isExpired(key) {
return (!this.cache.has(key)) ||
(this.cache.has(key) && (!this.expirations.has(key) || this.expirations.get(key) < Date.now()));
import AWS from 'aws-sdk';
const { AWS_REGION = 'us-east-1', NODE_ENV = 'development', AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY } = process.env;
const config = {
region: AWS_REGION,
accessKeyId: AWS_ACCESS_KEY_ID,
secretAccessKey: AWS_SECRET_ACCESS_KEY,
};
AWS.config.update(config);