Skip to content

Instantly share code, notes, and snippets.

@mzabriskie
mzabriskie / custom-axios.js
Created March 2, 2016 20:18
Auto detect Greasemonkey and use custom axios adapter if available
import axios from 'axios';
if (typeof GM_xmlhttpRequest === 'function') {
import GMAdapter from './GMAdapter';
axios.defaults.adapter = GMAdapter;
}
export default axios;
import axios from 'axios';
axios.defaults.adapter = (resolve, reject, config) => {
let data = null;
let status = 200;
let headers = {};
// Here you would check some registry of request URLs for response
// This would allow you to determine resolve/reject
// Also what is the actual data for the response
@mzabriskie
mzabriskie / screenreader-only.css
Created September 30, 2015 22:14
Screenreader Only CSS
.screenreader-only {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
transform: translatez(0);
@mzabriskie
mzabriskie / nps.js
Created September 8, 2015 19:01
Calculate Net Promoter Score
// Expects an array of scores from 0-10
// Example: nps([10, 9, 10, 4]); -> 50
// See http://www.medallia.com/net-promoter-score/
function nps(scores) {
var promoters = 0;
var detractors = 0;
for (var i=0, l=scores.length; i<l; i++) {
if (scores[i] >= 9) promoters++;
if (scores[i] <= 6) detractors++;
var output = document.getElementById('output');
var points;
var drawing = false;
function handleMouseDown() {
points = [];
output.innerHTML = '';
document.addEventListener('mousemove', handleMouseMove);
document.addEventListener('mouseup', handleMouseUp);
}
#!/bin/bash -e
dir="$1"
# No dir provided
if [ -z "$dir" ]
then
dir="`pwd`"
fi
// Abort a request using requestId
axios.get('/some/url', {
requestId: 'some-url'
})
.then((res) => {
console.log(res.data);
});
axios.abort('some-url');
@mzabriskie
mzabriskie / checklist.md
Last active October 29, 2015 17:45
Release Process
  1. npm test
  2. npm run build
  3. Update package.json & bower.json version
  4. Update Changelog.md
  5. git commit -am"Releasing x.x.x"
  6. git push
  7. git tag -a vx.x.x -m"version x.x.x"
  8. git push origin --tags
  9. npm publish ./
@mzabriskie
mzabriskie / benchmark.js
Last active August 29, 2015 14:18
Benchmark parsing a String which is potentially JSON
var JSON_START = /^\s*(\[|\{[^\{])/;
var JSON_END = /[\}\]]\s*$/;
function benchmark(label, fn, data) {
console.time(label);
for (var i=0; i<1000; i++) {
fn(data);
}
console.timeEnd(label);
}
@mzabriskie
mzabriskie / ReactPropDefinitions.js
Last active August 29, 2015 14:18
React Prop Types/Defaults Single Statement
var App = React.createClass({
propDefinition: {
requiredStringProp: React.PropTypes.string.isRequired.default('Hello World'),
optionalNumberProp: React.PropTypes.number.default(12345),
enforcedObjectNoDefaultProp: React.PropTypes.object,
defaultValueNoTypeProp: true
}
});