Skip to content

Instantly share code, notes, and snippets.

🙈

Jonny Buchanan insin

View GitHub Profile
View package.ts
import * as path from 'https://deno.land/x/fs/path.ts'
export { path }
@insin
insin / .babelrc-default
Last active Jul 14, 2018
babel-plugin-add-module-exports bug repro
View .babelrc-default
{
"presets": [
"@babel/env",
],
"plugins": [
"add-module-exports"
]
}
@insin
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['@mozilla.org/intl/scriptableunicodeconverter']
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter)
converter.charset = 'UTF-8'
let data = converter.convertToByteArray(input)
let ch = Components.classes['@mozilla.org/security/hash;1']
.createInstance(Components.interfaces.nsICryptoHash)
ch.init(ch.SHA1)
ch.update(data, data.length)
let hash = ch.finish(false)
@insin
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(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
/* 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
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['@mozilla.org/login-manager;1']
.getService(Components.interfaces.nsILoginManager)
let matchingLogins = loginManager.getAllLogins().filter(l => l.password === oldPassword)
let matchCount = matchingLogins.length
if (matchCount === 0) return alert('No matching logins found')
@insin
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;
}
View README.md

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
insin / board.js
Last active Apr 5, 2019
Using CSS transition & transform to move a component: https://react-simple-transform.surge.sh
View board.js
import React from 'react'
import {render} from 'react-dom'
let Board = React.createClass({
getInitialState() {
return {
x: 150,
y: 150,
}
},
@insin
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.