Skip to content

Instantly share code, notes, and snippets.


Jonny Buchanan insin

View GitHub Profile
View package.ts
import * as path from ''
export { path }
insin / .babelrc-default
Last active Jul 14, 2018
babel-plugin-add-module-exports bug repro
View .babelrc-default
"presets": [
"plugins": [
insin / checkLogins.js
Last active Jul 13, 2018
Check your saved Firefox logins against the Pwned Passwords API (run in Tools → Web Developer → Browser Console)
View checkLogins.js
function sha1(input) {
let converter = Components.classes['']
converter.charset = 'UTF-8'
let data = converter.convertToByteArray(input)
let ch = Components.classes[';1']
ch.update(data, data.length)
let hash = ch.finish(false)
insin / userChrome.css
Last active Mar 4, 2018
userChrome.css for some aspects of the Firefox >= 57 UI which can't be tweaked via regular config
View userChrome.css
@namespace url(;
/* Remove the gap to the left of the title tab bar */
#TabsToolbar hbox.titlebar-placeholder[type="pre-tabs"] {
display: none !important;
/* Remove the buttons on the right of the location bar */
#page-action-buttons {
display: none !important;
insin / updatePasswords.js
Last active Feb 28, 2018
Mass update Firefox passwords (run in Tools → Web Developer → Browser Console)
View updatePasswords.js
function updatePasswords() {
let oldPassword = prompt('Old password:')
if (!oldPassword) return
let loginManager = Components.classes[';1']
let matchingLogins = loginManager.getAllLogins().filter(l => l.password === oldPassword)
let matchCount = matchingLogins.length
if (matchCount === 0) return alert('No matching logins found')
insin / index.css
Last active Nov 8, 2017
Flexbox layout fun
View index.css
html {
height: 100%;
body {
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
height: 100%;
margin: 0;

To run the example:

npm install -g nwb
react run example.js --auto-install
View getLatestVersion.js
import spawn from 'cross-spawn'
import ora from 'ora'
* Get the latest version of a package from npm.
export function getLatestVersion(pkg, cb) {
let spinner = ora(`Checking for latest version of ${pkg}`).start()
let npm = spawn('npm', ['dist-tag', 'ls', pkg, '--no-progress'], {stdio: ['ignore', 'pipe', 'inherit']})
let stdout = ''
insin / board.js
Last active Apr 5, 2019
Using CSS transition & transform to move a component:
View board.js
import React from 'react'
import {render} from 'react-dom'
let Board = React.createClass({
getInitialState() {
return {
x: 150,
y: 150,
insin / utils.js
Created Nov 10, 2016
Redux duck utils
View utils.js
// Matches the naming convention for functions which select from Redux state
const SELECTOR_NAME_RE = /^get[A-Z]/
* Creates a function which creates same-named action dispatchers from an object
* whose function properties are action creators, passing along any arguments.
* Function properties whose names start with "get" will be ignored, as these
* are assumed to be selectors by convention.
* Also makes the dispatch function itself available.
* (If this was Java, it'd be a class named ActionDispatcherFactoryFactory).
You can’t perform that action at this time.