Skip to content

Instantly share code, notes, and snippets.

@rw3iss
rw3iss / esbuildEnvFilePlugin
Created February 15, 2021 18:13
esbuild local .env file loader plugin
let envFilePlugin = {
name: 'env',
setup(build) {
function _findEnvFile(dir) {
if (!fs.existsSync(dir))
return false;
let filePath = `${dir}/.env`;
if ((fs.existsSync(filePath))) {
@rw3iss
rw3iss / config.js
Created March 2, 2021 17:14
Config file per environment loader
import { ENV } from 'env';
import fs from 'fs';
import path from 'path';
let prefix = './config/';
let configFile = 'config.local.json';
if (ENV == 'production') {
configFile = 'config.prod.json';
} else if (ENV == 'development') {
@rw3iss
rw3iss / readfile.js
Created March 3, 2021 21:29
Read a file input
// trigger upload dialog:
this.importFile.current.click();
onFileImportChange = (e) => {
try {
const reader = new FileReader();
reader.addEventListener('load', () => {
let data = JSON.parse(reader.result);
this.setState(data);
});
@rw3iss
rw3iss / mkDirSync.js
Last active March 9, 2021 18:16
Make a directory if it doesn't exist (sync)
var mkdirSync = function(dir) {
if (fs.existsSync(dir)) {
return;
}
try {
fs.mkdirSync(dir);
} catch(err){
if(err.code == 'ENOENT'){
@rw3iss
rw3iss / Cache.js
Last active March 30, 2021 16:59
redis server Cache.js
const { getRedisClient } = require('./redis/redis')
redis = getRedisClient()
const EXPIRE_DEFAULT = 60*60; // seconds = 1hr
// App-wide cache. Just a wrapper for redis.
class Cache {
async get(id) {
@rw3iss
rw3iss / Response.js
Created March 30, 2021 17:16
Node Server Utils
export default class Response {
static success(res, data) {
const r = {
success: true
}
if (data) {
r.data = data
}
@rw3iss
rw3iss / launch.js
Last active April 11, 2021 01:35
browsersync script to hot reload any client project
const bs = require('browser-sync').create();
const url = require('url');
const fs = require('fs');
const path = require('path');
const PORT = 3300
const OUTPUT_DIR = './build'
const DEFAULT_FILE = "index.html"
bs.watch(`${OUTPUT_DIR}/**/*.js`, function (event, file) {
@rw3iss
rw3iss / awsStorage.js
Last active April 11, 2021 14:18
File Uploads - with GCP or AWS
// Client:
onImagesAdded = (e) => {
try {
console.log('added', e)
Array.from(e.target.files).forEach(async (f: any) => {
let sUrl = await S3Service.getSignedUrl(f.name, f.type);
console.log('got signed url', sUrl)
let r = await this.sendFile(f, sUrl);
})
@rw3iss
rw3iss / Store.ts
Created April 11, 2021 14:35
Store.ts
import LocalStorage from 'lib/utils/LocalStorage';
export default class Store {
id: string;
items: any;
autoSave = true;
constructor(storeId, items = {}, autoSave = true) {
this.id = storeId;
@rw3iss
rw3iss / IDB.ts
Last active April 11, 2021 17:14
IndexedDB
/* Usage:
// init:
this.db = new IDB();
this.db.open(DBNAME);
this.db.addStore(DBNAME, { autoIncrement: true }, [
{ name: 'id', key: 'id', params: { unique: true } },
{ name: 'word, language', key: [ 'word', 'language' ], params: { unique: true } },
]);