Skip to content

Instantly share code, notes, and snippets.

View jgcmarins's full-sized avatar

João Marins jgcmarins

View GitHub Profile
@jgcmarins
jgcmarins / webpack.config.js
Created November 20, 2020 17:35 — forked from jkinkead/webpack.config.js
Webpack configuration for Google Cloud Functions
const webpack = require('webpack')
const path = require('path')
const nodeExternals = require('webpack-node-externals')
const StartServerPlugin = require('start-server-webpack-plugin')
module.exports = {
entry: [
'webpack/hot/poll?1000',
'./local/server'
],
watch: true,
@jgcmarins
jgcmarins / changelog.js
Created November 9, 2020 17:10
Setup to generate git tag and GitHub release with changelog based on commit messages
#!/bin/env node
// @ts-check
import fs from 'fs';
import { exec as execCb } from 'child_process';
import util from 'util';
import moment from 'moment';
import git from 'simple-git/promise';
@jgcmarins
jgcmarins / store.mjs
Created October 1, 2020 17:16 — forked from kristoferjoseph/store.mjs
store
const listeners = []
const state = {}
let noop = x => x
function subscribe (fn) {
listeners.push(fn)
}
function unsubscribe (fn) {
listeners.splice(listeners.indexOf(fn), 1)
@jgcmarins
jgcmarins / filterAsync.ts
Created July 29, 2020 14:00 — forked from sibelius/filterAsync.ts
Simple filter async
function mapAsync<T, U>(array: T[], callbackfn: (value: T, index: number, array: T[]) => Promise<U>): Promise<U[]> {
return Promise.all(array.map(callbackfn));
}
async function filterAsync<T>(array: T[], callbackfn: (value: T, index: number, array: T[]) => Promise<boolean>): Promise<T[]> {
const filterMap = await mapAsync(array, callbackfn);
return array.filter((value, index) => filterMap[index]);
}
@jgcmarins
jgcmarins / backup.js
Created July 26, 2020 16:28 — forked from theouerd/backup.js
Auto backup function.
const fs = require('fs');
const _ = require('lodash');
const exec = require('child_process').exec;
const path = require('path');
// Concatenate root directory path with our backup folder.
const backupDirPath = path.join(__dirname, 'database-backup');
const dbOptions = {
user: '<databaseUsername>',
// inspired by https://stackoverflow.com/questions/105034/how-to-create-guid-uuid/2117523#2117523
// @TODO - improve this
export function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = (Math.random() * 16) | 0,
v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
@jgcmarins
jgcmarins / webpack.config.js
Created July 21, 2020 18:15
Run any Node.js script with webpack. Usage: babel-node webpackx.js ./path/to/script
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const cwd = process.cwd();
export const outputPath = path.join(cwd, '.webpack');
export const outputFilename = 'bundle.js';
export default {
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
const path = require('path');
const { FileStore } = require('metro-cache');
import mongoose from 'mongoose';
import { MONGO_URI } from './config';
let cachedMongoConn = null;
export default function connectDatabase() {
return new Promise((resolve, reject) => {
mongoose.Promise = global.Promise;
mongoose.connection