jQuery and common function shortcuts everywhere

injects jquery if not exists and adds some common function shortcuts to the window object. See al.help() for details.

// ==UserScript==
// @name         jQuery and common function shortcuts everywhere
// @namespace    https://github.com/Alistair1231/my-userscripts/
// @version      0.5.1
// @description  injects jquery if not exists and adds some common function shortcuts to the window object. See al.help() for details.
// @author       Alistair1231
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @license      MIT
// ==/UserScript==
// https://greasyfork.org/en/scripts/439017-jquery-and-common-function-shortcuts-everywhere
(function () {
  'use strict';
  const helpString = `
'\
al: jQuery and Method shortcuts everywhere\\n\
------------------------------------------\\n\
al.cl(str) - console.log(str)\\n\
al.js(obj) - JSON.stringify(obj)\\n\
al.jsp(obj) - JSON.stringify(obj, null, 2)\\n\
al.jp(str) - JSON.parse(str)\\n\
al.qs(selector) - document.querySelector(selector)\\n\
al.qsa(selector) - document.querySelectorAll(selector)\\n\
al.gid(id) - document.getElementById(id)\\n\
al.print() - Prints the object definition\\n\
al.eurl(str) - document.encodeURIComponent(str)\\n\
al.durl(str) - document.decodeURIComponent(str)\\n\
------------------------------------------\\n\
'
`;

  const shortcuts = `
const al = {
  help: () => console.log(${helpString}),
  cl: (str) => console.log(str),
  js: (obj) => JSON.stringify(obj),
  jsp: (obj) => JSON.stringify(obj, null, 2),
  jp: (str) => JSON.parse(str),
  qs: (selector) => document.querySelector(selector),
  qsa: (selector) => document.querySelectorAll(selector),
  gid: (id) => document.getElementById(id),
  print: () => {
    const { help, ...rest } = al;
    console.log(rest);
  },
  eurl: (str) => document.encodeURIComponent(str),
  durl: (str) => document.decodeURIComponent(str)
};
`;

  const e = document.createElement('script');
  e.id = 'injectedScript';
  e.innerText = shortcuts;

  document.head.appendChild(e);

  if (typeof $ != 'function') {
    window.$ = function (selector, target) {
      if (typeof target == 'undefined') {
        target = document;
      }
      return target.querySelector(selector);
    }
  }
  if (typeof $$ != 'function') {
    window.$$ = function (selector, target) {
      if (typeof target == 'undefined') {
        target = document;
      }
      return Array.from(target.querySelectorAll(selector));
    }
  }

})();