Skip to content

Instantly share code, notes, and snippets.

View monkpit's full-sized avatar

Kyle Pittman monkpit

  • Dallas, Texas, USA
View GitHub Profile
@monkpit
monkpit / addJQuery.js
Created July 8, 2021 19:07
Add jQuery via console
var script = document.createElement('script');
script.src = "https://code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
@monkpit
monkpit / crossProduct.js
Last active August 9, 2021 21:23
Cross product of 2 javascript arrays
const {equals, flatten, join, map, pipe, unnest, xprod} = require('ramda');
const xprod2 = require('./xprod.js');
const urls = [
'stackexchange.com',
'askubuntu.com',
'superuser.com'
];
const filters = [
@monkpit
monkpit / jsconfig.json
Created June 30, 2021 17:36
Cypress jsconfig.json
{
"include": ["./node_modules/cypress", "cypress/**/*.js"]
}
@monkpit
monkpit / immutableSort.ts
Created June 1, 2021 21:01
Typed Immutable Sort
export const immutableSort = <T>(array: T[], comparatorFn?: (a: T, b: T) => number): T[] =>
[...array].sort(comparatorFn);
describe('immutableSort', () => {
const testData = [4, 2, 5, -1, 0];
it('can sort an array', () => {
const result = immutableSort(testData);
expect(result).toStrictEqual([-1, 0, 2, 4, 5]);
});
@monkpit
monkpit / numericPropSort.ts
Last active January 11, 2022 22:09
Numeric Prop Sorter - given a prop and an optional callback (for when equal values will be sub-sorted), returns a function to be passed to Array.sort
/**
* Creates a sort function that will compare based upon a certain property in an object.
*
* @param {keyof T} prop - the property of the object to sort by
* @param [options.order] the order to sort - either 'asc' or 'desc'
* @param [options.callback] callback used as a tiebreaker when the property on both objects is equal.
* @returns A function to be passed to Array.sort();
*/
export const numericPropSort =
<P extends string, T extends Record<P | keyof T, number>>(
@monkpit
monkpit / build.sh
Created April 28, 2021 23:20 — forked from kpittman-securus/build.sh
Parallel execution with find and xargs
#! /usr/bin/env bash
find ./src/bookmarklets -name "*.js" -print0 | xargs -I FILE -0 -P "$(nproc)" npm run rollup -- --input "FILE" --file "output/FILE"
# EDIT: Per my latest comment - I now prefer this:
for bookmarklet in ./src/bookmarklets/**/*.js
do
npm run rollup -- --input "$bookmarklet" --file "output/$bookmarklet" &
done
wait
const keymap = <T extends unknown, U extends object>(
object: U,
callback: (key: keyof U, index: number) => T
) => (Object.keys(object) as (keyof U)[]).map(callback);
@monkpit
monkpit / deploy.ts
Created April 28, 2021 23:19 — forked from kpittman-securus/deploy.ts
NewRelic deploy via browser JS
step('Trigger NewRelic marker', async (b: Browser) => {
const description = `Flood run started - ${ENV.FLOOD_SEQUENCE_ID}`;
await b.page.evaluate(
(_description, sequenceId) => {
const applicationId = '123';
fetch(`https://api.newrelic.com/v2/applications/${applicationId}/deployments.json`, {
method: 'POST',
body: JSON.stringify({
deployment: {
description: _description,
@monkpit
monkpit / cleanupPR.js
Created April 28, 2021 23:18 — forked from kpittman-securus/cleanupPR.js
Mark deleted as viewed, sort all files by number of changes
const container = $('#files');
const files = Array.from($$('.file'));
const getSortText = (el) => el.querySelector('.diffstat').innerText;
files.sort((a, b) => {
const aSortText = getSortText(a);
const bSortText = getSortText(b);
if (aSortText > bSortText) return 1;
if (aSortText < bSortText) return -1;
return 0;
});