Skip to content

Instantly share code, notes, and snippets.

import isSelectorValid from './isSelectorValid';
export default (param) => {
switch (true) {
case isSelectorValid(param):
return document.querySelectorAll(param);
case param instanceof HTMLElement:
return [param];
case param instanceof NodeList:
case param instanceof HTMLCollection:
const queryCheck = (s) => document.createDocumentFragment().querySelector(s);
export default function isSelectorValid(selector) {
if (typeof selector !== 'string') return false;
try { queryCheck(selector); } catch { return false; }
return true;
}
function getLabelTextFromField(formElement) {
return formElement.ariaLabel
|| formElement.labels?.[0]?.textContent;
}
### Keybase proof
I hereby claim:
* I am robsonsobral on github.
* I am sobral (https://keybase.io/sobral) on keybase.
* I have a public key ASAkt8uL-f9T3CK-tZOXvoDrYwLll6Numf_mDlhuli_s9go
To claim this, I am signing this object:
@robsonsobral
robsonsobral / meta-tags.html
Created May 23, 2020 23:20 — forked from benwo/meta-tags.html
Standard meta tags and meta image tags (and sizes).
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/Organization" lang="en">
<head>
<!-- Settings -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Search Engines -->
@robsonsobral
robsonsobral / cloudflare.sh
Created April 25, 2020 03:29 — forked from Manouchehri/cloudflare.sh
Allow CloudFlare only
# Source:
# https://www.cloudflare.com/ips
# https://support.cloudflare.com/hc/en-us/articles/200169166-How-do-I-whitelist-CloudFlare-s-IP-addresses-in-iptables-
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $i -j ACCEPT; done
# Avoid racking up billing/attacks
# WARNING: If you get attacked and CloudFlare drops you, your site(s) will be unreachable.
iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
@robsonsobral
robsonsobral / cloudflare-ip.sh
Created April 25, 2020 03:29 — forked from jschpp/cloudflare-ip.sh
script to add all cloudflare IPs to iptables
#!/bin/sh
exec > /var/log/cloudflare.log 2>&1
set -x
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do /usr/sbin/iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT; done
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do /usr/sbin/ip6tables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT; done
@robsonsobral
robsonsobral / paste.js
Created December 4, 2019 13:34 — forked from cesarfigueroa/paste.js
Paste onto a [contenteditable] element as plain text
document.querySelector('[contenteditable]').addEventListener('paste', function (event) {
event.preventDefault();
document.execCommand('inserttext', false, event.clipboardData.getData('text/plain'));
});
@robsonsobral
robsonsobral / pageant-autoload-keys-at-startup.txt
Created January 21, 2019 23:13 — forked from chunter/pageant-autoload-keys-at-startup.txt
Make Pageant autoload keys at startup
To make Pageant automatically run and load keys at startup:
- Find the location of pageant.exe
- Windows key + R to open the 'run' dialog box
- Type: 'shell:startup' in the dialog box
- Create a shortcut to the pageant.exe and put into this startup folder.
@robsonsobral
robsonsobral / gist:1df6bb51ef0c04dc5fcc0afd5b36bddf
Created January 9, 2019 18:32
Hugo query string cachebusting
<script src="{{ $script.RelPermalink }}?mtime={{ (os.Stat "/static/scripts/index.js" ).ModTime.Unix }}"></script>