Skip to content

Instantly share code, notes, and snippets.

Avatar

Søren Louv-Jansen sqren

View GitHub Profile
@sqren
sqren / jest-run-timers-until-resolved.ts
Last active Apr 1, 2020
Simplifies testing promise-returning-functions that executes timers (setTimeout / setInterval). The helper `runTimersUntilResolved` will run the timers repeatedly until the promise resolves. Jest helper.
View jest-run-timers-until-resolved.ts
/*
* Run timers (setInterval/setTimeout) every tick continuously until the promise has been resolved
*/
async function runTimersUntilResolved(fn: () => Promise<any>) {
jest.useFakeTimers();
let isResolved = false;
const p = fn();
p.finally(() => (isResolved = true));
@sqren
sqren / mac-os-mapping-keys-uk-keyboard.md
Last active Jul 28, 2020
Map tilde sign (`) to section sign (§) on MacOS (useful for UK keyboards)
View mac-os-mapping-keys-uk-keyboard.md
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035},{"HIDKeyboardModifierMappingSrc":0x700000035,"HIDKeyboardModifierMappingDst":0x700000064}]}'
@sqren
sqren / .gitconfig
Created Apr 21, 2019
Example .gitconfig file
View .gitconfig
[user]
name = John Doe
email = johndoe@gmail.com
@sqren
sqren / useComponentId.js
Last active Oct 21, 2020
React hook for getting a unique identifier for a component
View useComponentId.js
import { useRef } from 'react';
let uniqueId = 0;
const getUniqueId = () => uniqueId++;
export function useComponentId() {
const idRef = useRef(getUniqueId());
return idRef.current;
}
@sqren
sqren / read-local-file.js
Created Feb 24, 2019
Bookmark to read local file
View read-local-file.js
copy(
encodeURIComponent(`(function() {
function readLocalFile(e) {
const file = e.target.files[0];
if (!file) {
alert('No file selected!')
}
const reader = new FileReader();
reader.onload = function(e) {
const contents = e.target.result;
@sqren
sqren / github-changed-files-filter.js
Last active Nov 23, 2018
Count lines-of-code changed on Github PR excluding certain files
View github-changed-files-filter.js
/*
The number of changed files (additions/deletions) includes all files.
I wanted to see how many files I had changed, excluding tests and test snapshots.
This filter will help you do that.
To use it, go to the PR, navigate to "Files" and invoke the following
*/
(function() {
const excludeWords = ['test', 'mock-responses', 'typings'];
View gist:83f9e5b8f40c5fa0bc4dd4cafe6c0f2b
const hypercore = require('hypercore');
const discovery = require('discovery-swarm');
const multifeed = require('multifeed');
const pump = require('pump');
const suffix = process.argv[2];
const db = `./multichat-${suffix}`;
console.log(`Using db: ${db}`);
const multi = multifeed(hypercore, db, { valueEncoding: 'json' });
@sqren
sqren / puppeteer-random-page.js
Last active Sep 6, 2018
Infinitely click around page
View puppeteer-random-page.js
# yarn add puppeteer
# node ./puppeteer-random-page.js
const puppeteer = require('puppeteer');
const initialUrl = process.env.url || 'http://localhost:8080';
async function init() {
const browser = await puppeteer.launch({ headless: true });
return browser.newPage();
}
@sqren
sqren / package.json
Last active May 6, 2018
Browserify, Babel and React
View package.json
{
"scripts": {
"browserify": "browserify --standalone myModuleName ./src/index.js | uglifyjs --compress --source-map --output dist/index.min.js"
},
"browserify": {
"transform": [
[
"babelify",
{
"presets": [
@sqren
sqren / replace-webpack-alias-with-relative-path.js
Created Apr 29, 2018
Replace webpack aliases with relative paths
View replace-webpack-alias-with-relative-path.js
// Usage: jscodeshift -t replace-webpack-alias-with-relative-path.js ./kibana/x-pack/plugins ./kibana/src
const path = require('path');
const URI = require('urijs');
function getRelativePath(currentFilePath, dependencyPath) {
return URI(dependencyPath)
.relativeTo(currentFilePath)
.toString();
}
You can’t perform that action at this time.