Skip to content

Instantly share code, notes, and snippets.

View danecando's full-sized avatar
🔨

Dane Grant danecando

🔨
View GitHub Profile
@danecando
danecando / hapi-server.js
Last active July 26, 2017 01:05
Fluxible server side rendering with Hapi
'use strict';
require('babel/register');
var Hapi = require('hapi');
var db = require('./db');
var serialize = require('serialize-javascript');
var navigateAction = require('flux-router-component').navigateAction;
var debug = require('debug')('Example');
var React = require('react');
@danecando
danecando / upload.js
Created April 6, 2015 22:17
Cordova Meteor Slingshot
window.resolveLocalFileSystemURL(imageUri, function(fileEntry) {
fileEntry.file(function(file) {
file.name = filename;
template.cordovaFile = file;
});
});
var file = template.cordovaFile;
var reader = new FileReader();
reader.onloadend = function(e) {
@danecando
danecando / parse-cli-opts.sh
Created September 27, 2015 17:09
Bash script to parse command line args / flags (./script start --name=awesome -t --number=15 -g realll)
# parse cli args
for ((i = 1; i <= $#; i + 0)); do
read -a tmp <<<${@}
if [[ ${!i} =~ ^[-]?[a-z]$ && ${@:((i + 1)):1} =~ ^[^-] ]]; then
tmp[i]=${tmp[@]:((i - 1)):1}"="${tmp[i]}
set -- ${tmp[*]}
fi
if [[ ${!i} == "-"* ]]; then #
case ${!i} in
# flags with args
@danecando
danecando / hapi-bookshelf.js
Created June 3, 2016 01:40
codes for my hapi-bookshelf plugin
'use strict';
const Joi = require('joi');
const U = require('./utils');
const Schema = require('./schema');
const Pkg = require('./package.json');
const internals = {};
internals.PLUGIN_NAME = Pkg.name;
@danecando
danecando / FormStore.js
Created June 18, 2018 05:29
Mobx store for managing form state (built for my react-native app)
import { reduce, find } from 'lodash';
import { observable, action, computed, extendObservable } from 'mobx';
import Validator from 'validatorjs';
import en from 'validatorjs/src/lang/en';
Validator.setMessages('en', en);
class FormStore {
@danecando
danecando / useFirebaseUploader.ts
Last active July 10, 2022 01:45
React hook for uploading files with Firebase JS client API
import type {
StorageReference,
UploadMetadata,
UploadTask,
} from 'firebase/storage';
import * as React from 'react';
import { ref, uploadBytesResumable, getDownloadURL } from 'firebase/storage';
import { getStorage } from '~/services/firebase';
export enum UploadState {
@danecando
danecando / injection_thread.cpp
Created May 21, 2022 00:13
The first code that I ever open sourced on gamedeception.net
// Some dll injection code
// November 21, 2004
// by SpuN [ http://spun.gamedeception.net ]
// injection_thread.cpp
DWORD WINAPI InjectionThread(LPVOID lpParam)
{
while(1)
{
@danecando
danecando / fargate-copilot-deploy.yml
Created May 22, 2022 23:45
GitHub Action: Deploy AWS Fargate app with AWS Copilot
deploy:
name: 🚀 Deploy
runs-on: ubuntu-latest
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
- name: ⬇️ Checkout repo
uses: actions/checkout@v3
@danecando
danecando / SerializeType.ts
Last active June 7, 2022 11:12
SerializeType utility for converting a type to JSON
// credit @colinhacks
// https://github.com/remix-run/remix/pull/1254
type JSONPrimitives = string | number | boolean | null;
type NonJSONPrimitives = undefined | Function | symbol;
export type SerializeType<T> = T extends JSONPrimitives
? T
: T extends undefined
? undefined
@danecando
danecando / useCurrentItemScroller.ts
Last active June 23, 2022 00:33
React hook for auto scrolling a list of children that have a aria-current attribute
import type {RefObject} from 'react';
import {useEffect} from 'react';
const defer = (fn: () => void) => setTimeout(fn, 0);
export function useCurrentItemScroller(containerRef: RefObject<HTMLElement>) {
useEffect(() => {
const containerEl = containerRef.current;
let observer: MutationObserver | undefined;
if (containerEl) {