Skip to content

Instantly share code, notes, and snippets.

Avatar
📜

Jonny Buchanan insin

📜
View GitHub Profile
@insin
insin / package-changelog.js
Last active Jun 27, 2020
Generate changelog Markdown for pinned npm packages in a package.json diff
View package-changelog.js
/**
* Generates changelog Markdown for pinned npm packages in a package.json diff
*
* Usage: git diff package.json | node package-changelog.js
*/
let fs = require('fs')
let changes = fs.readFileSync(0, 'utf-8')
@insin
insin / repro.lua
Created Apr 23, 2020
Repro of obs.obs_sceneitem_group_enum_items() bug
View repro.lua
local obs = obslua
--- name of a scene item
local source_name = ''
--- get the name of the current scene
local function current_scene_name()
local source = obs.obs_frontend_get_current_scene()
local name = obs.obs_source_get_name(source)
obs.obs_source_release(source)
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 Jun 10, 2019
Mass update Firefox passwords (run in Tools → Web Developer → Browser Console) - https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox#Enabling_the_Browser_Toolbox
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 = ''
You can’t perform that action at this time.