Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am JedWatson on github.
  • I am jedwatson (https://keybase.io/jedwatson) on keybase.
  • I have a public key whose fingerprint is 75DB 2419 8E41 BF37 4E39 88F9 5D4F 4D18 EF37 8B10

To claim this, I am signing this object:

@JedWatson
JedWatson / renderComponentToStringAndCSS.js
Last active August 29, 2015 14:24
React.renderComponentToStringAndCSS
var MyComponent = React.createComponent({
render () {
return <div style={{ color: 'blue' }}>Hello World</div>;
});
var page = React.renderComponentToStringAndCSS(MyComponent);
// value of page:
page = {
html: '<div className="__a" data-reactid=".abc" data-react-checksum="123" data-react-classname="__a">Hello World</div>',
@JedWatson
JedWatson / Flick.js
Created July 12, 2015 04:32
Declarative Interaction Component
<Flick settings={...}>
{velocityDelta =>
<Spring
currentVelocity={currentVelocity => velocityDelta === 0 ? currentVelocity :
increase(currentVelocity, velocityDelta)
}
endValue={...}>
{currentValues => <div />}
</Spring>
}
@JedWatson
JedWatson / async.js
Last active January 3, 2016 14:19 — forked from getify/gist:8459026
Comparison between (my) old callback-structured code, @getify's asynquence refactor, and my async refactor
var doQuery = function() {
// passing an object to async.parallel will cause it to collect their results
// and provide them to the callback in an object with the same keys.
async.parallel({
// functions are passed a callback with the standard argument pattern of fn(err, result)
count: count.exec,
query: query.exec
}, function(err, results) {
@JedWatson
JedWatson / async.js
Last active January 3, 2016 18:29 — forked from getify/async.js
Another refactor of a refactor, this time w/o all original comments but w/ proposals. Not currently possible with asynquence, but maybe? *nudge*
var transform = function(contents, doneTransform) {
var authExpiry = 60 * 60 * 1000,
authId = uuid.v4(),
authKey = 'file:auth:' + authId;
redis.client.set(authKey, JSON.stringify({
userId: req.user.id
}));
redis.client.expire(authKey, authExpiry);
@JedWatson
JedWatson / styles.jsx
Created April 5, 2016 03:14
A simple thought experiment demonstrating concepts I'm thinking about for styling react components in javascript
import React, { Component, PropTypes } from 'react';
import { Link } from 'react-router';
import useSheet from 'react-jss';
import CloudinaryImage from './CloudinaryImage';
const Author = ({image, name}, {theme}) => {
const classes = useSheet(stylesheet, theme);
const { authorKey, bio, id, image, name, summary, urlPath } = this.props;
@JedWatson
JedWatson / files.js
Created April 8, 2016 11:39
File Field Scratchpad
keystone.init({
...options
});
var S3Storage = require('keystone-storage-s3');
keystone.addStorage('s3bucket1', S3Storage, {
key: 'my key',
bucket: 'keystone-stuff',
secret: 'abracadabra',
@JedWatson
JedWatson / localfile.js
Created April 11, 2016 14:10
LocalFile Contents Scratch
{ fieldname: 'file',
originalname: 'Advanced example.md',
name: '1458848e82f2de780e5ad963d93606aa.md',
encoding: '7bit',
mimetype: 'text/markdown',
path: '/var/folders/ck/y02pffhs31xd_k4xc9xmn3hw0000gn/T/1458848e82f2de780e5ad963d93606aa.md',
extension: 'md',
size: 7703,
truncated: false,
buffer: null } }
@JedWatson
JedWatson / UserStore.js
Created March 26, 2015 00:40
Simple store-prototype example for a User Store + View
var Store = require('store-prototype');
var UserStore = new Store();
var users = {};
var loaded = false;
UserStore.extend({
loadUsers: function() {
loadUsersSomehow(function(err, results) {
users = results;
@JedWatson
JedWatson / async.js
Last active March 1, 2018 11:29
Example usage of async.map to update an array against a redis cache
// This function takes a contents object with a files array.
// The goal is to cache each file details in redis then replace
// the file's path with a secure, obscured url.
// Finally the contents object is returned with the updated array
// in place of the old one.
// async = require('async')
// uuid = require('node-uuid')
// redis.client = require('node-redis').createClient()