(Stats used from 2022-06-20)
chrome >= 79, and_chr >= 81, safari >= 13, ios_saf >= 12.4, firefox >= 73
...or more generally
[
#!/bin/bash | |
touch urls.txt | |
CURR=`pwd` | |
if [ $# -ne 0 ] | |
then | |
let COUNT=0 | |
mkdir $1 | |
while read url |
import React, { useState, useEffect, useRef } from 'react'; | |
window.windowWidthListeners = window.windowWidthListeners || {}; | |
window.prevWidth = window.prevWidth || window.innerWidth; | |
window.addEventListener('resize', () => { | |
if (window.prevWidth !== window.innerWidth) { | |
window.prevWidth = window.innerWidth; | |
Object.values(window.windowWidthListeners).forEach(fn => fn(window.prevWidth)); | |
} |
const debounce = (func, ms = 500) => { | |
let timeout; | |
return function(...args) { | |
clearTimeout(timeout); | |
return new Promise(resolve => { | |
timeout = setTimeout(() => { | |
resolve(func.bind(this)(...args)); | |
}, ms); | |
}); | |
}; |
// For node and pre-babel src | |
const toSafeSlug = str => "_" + encodeURIComponent(str) | |
.replace(/[.!~*'()_-]/g, match => `%${match.charCodeAt(0).toString(16)}`.toUpperCase()) | |
.replace(/%/g, "_"); | |
const fromSafeSlug = str => decodeURIComponent(str.substring(1).replace(/_/g, "%")); | |
// ES5 friendly |
const fs = require('fs'); | |
const path = require('path'); | |
const inquirer = require('inquirer'); | |
const uuidv4 = require('uuid/v4'); | |
const owasp = require('owasp-password-strength-test'); | |
const words = new Set([...require('wordlist-english')['english/10'], ...require('wordlist-english')['english/20']]); | |
const thingsIDontDoAnyMore = require("./thingsIDontDoAnyMore.json"); | |
const { items } = require('./bitwarden_export_file.json'); |
{ | |
"animation": [ | |
"animation-name", | |
"animation-duration", | |
"animation-timing-function", | |
"animation-delay", | |
"animation-iteration-count", | |
"animation-direction", | |
"animation-fill-mode", | |
"animation-play-state" |
class Queue { | |
private readonly queue: any[]; | |
private start: number; | |
private end: number; | |
constructor(array: any[] = []) { | |
this.queue = array; | |
// pointers | |
this.start = 0; |