Skip to content

Instantly share code, notes, and snippets.

View jaredpalmer's full-sized avatar

Jared Palmer jaredpalmer

View GitHub Profile
@jaredpalmer
jaredpalmer / index.js
Created November 21, 2016 21:57
require models dir
const fs = require('fs')
const path = require('path')
const models = path.join(__dirname, 'models')
fs.readdirSync(models)
.filter(file => ~file.indexOf('.js'))
.forEach(file => require(path.join(models, file)))
@jaredpalmer
jaredpalmer / EditableText.js
Created November 24, 2016 17:58
EditableText.js
/**
* This is converted from @palantir/blueprint's editable text.
*
* @see http://blueprintjs.com/docs/#components.editable
*/
import React, {Component} from 'react'
import classNames from 'classnames'
import { clamp, safeInvoke } from '../utils'
import PureRender from "pure-render-decorator";
@jaredpalmer
jaredpalmer / error.js
Created November 30, 2016 14:43
errors
'use strict'
const uuid = require('node-uuid')
class APIError extends Error {
constructor (opts) {
super(opts)
Error.captureStackTrace(this, APIError)
this.name = this.constructor.name || 'APIError'
this.code = opts.code || 500
@jaredpalmer
jaredpalmer / apiErrorHandler.js
Created November 30, 2016 14:44
api error handler
return function apiErrorHandler(err, req, res, next) {
var status = err.status || err.statusCode || 500;
if (status < 400) status = 500;
res.statusCode = status;
var body = {
status: status
};
// show the stacktrace when not in production
@jaredpalmer
jaredpalmer / package.json
Created December 15, 2016 15:45
Webpack Node.js with live reload.
{
"version": "0.0.1",
"scripts": {
"start": "npm-run-all --parallel watch:server watch:build",
"watch:build": "NODE_ENV='development' webpack --watch",
"watch:server": "nodemon \"./build/server/main.js\" --watch \"./build/server\""
},
"devDependencies": {
"babel-core": "^6.20.0",
"babel-loader": "^6.2.9",
@jaredpalmer
jaredpalmer / Login.js
Last active February 25, 2017 22:16
Login
import React from 'react';
import axios from 'axios';
import Link from 'react-router-dom/Link';
import qs from 'query-string';
import Helmet from 'react-helmet';
import { setToken } from '../utils/auth';
import {
Page,
Block,
Card,
@jaredpalmer
jaredpalmer / editabletext.js
Created February 26, 2017 01:30
editabletext.js
/**
* This is converted from @palantir/blueprint's editable text.
*
* @see http://blueprintjs.com/docs/#components.editable
*/
import React, {Component} from 'react'
import classNames from 'classnames'
import { clamp, safeInvoke } from '../utils'
import PureRender from "pure-render-decorator";
@jaredpalmer
jaredpalmer / InfiniteScroll.js
Created March 2, 2017 20:19 — forked from lelandrichardson/InfiniteScroll.js
Super Light Infinite Scroll Component in React
var React = require('react');
var { Component, PropTypes } = React;
var throttle = require('lodash/function/throttle');
class InfiniteScroll extends React.Component {
static propTypes = {
hasMore: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired,
onLoadMore: PropTypes.func.isRequired,
threshold: PropTypes.number,
@jaredpalmer
jaredpalmer / ZoomToMeters.js
Created March 16, 2017 23:11
Google Maps Zoom Levels to Meters
module.exports = {
'20': '1128.497220',
'19': '2256.994440',
'18': '4513.988880',
'17': '9027.977761',
'16': '18055.955520',
'15': '36111.911040',
'14': '72223.822090',
'13': '144447.644200',
'12': '288895.288400',
@jaredpalmer
jaredpalmer / withSSR.js
Last active August 1, 2019 00:40
SSR HOC
import React from 'react';
import axios from 'axios';
// This is a Higher Order Component that abstracts duplicated data fetching
// on the server and client.
export default function SSR(Page) {
class SSR extends React.Component {
static getInitialData(ctx) {
// Need to call the wrapped components getInitialData if it exists
return Page.getInitialData