diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..24057ce1c6 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,48 @@ +{ + "extends": [ + "standard", + "plugin:markdown/recommended" + ], + "plugins": [ + "markdown" + ], + "env": { + "browser": true, + "jquery": true + }, + "rules": { + "semi": ["error", "always"] + }, + "overrides": [ + { + "files": "**/*.md", + "processor": "markdown/markdown" + }, + { + "files": "**/*.md/*.js", + "rules": { + "semi": ["error", "never"], + "array-callback-return": "off", + "no-var": "error", + "n/handle-callback-err": "off", + "object-shorthand": "error", + "prefer-arrow-callback": "error", + "prefer-template": "error" + } + }, + { + "files": [ + "**/3x/*.md/*.js", + "**/4x/*.md/*.js", + "**/guide/migrating-4.md/*.js" + ], + "rules": { + "semi": ["error", "never"], + "no-var": "off", + "object-shorthand": "off", + "prefer-arrow-callback": "off", + "prefer-template": "off" + } + } + ] + } \ No newline at end of file diff --git a/js/app.js b/js/app.js index 2418c2f3a9..d968fde149 100644 --- a/js/app.js +++ b/js/app.js @@ -1,15 +1,15 @@ -$(function(){ - var doc = $(document); +$(function () { + const doc = $(document); // top link - $('#top').click(function(e){ - $('html, body').animate({scrollTop : 0}, 500); + $('#top').click(function (e) { + $('html, body').animate({ scrollTop: 0 }, 500); return false; }); // scrolling links - var added; - doc.scroll(function(e){ + let added; + doc.scroll(function (e) { if (doc.scrollTop() > 5) { if (added) return; added = true; @@ -18,30 +18,30 @@ $(function(){ $('body').removeClass('scroll'); added = false; } - }) + }); // menu bar - var headings = $('h2, h3').map(function(i, el){ + const headings = $('h2, h3').map(function (i, el) { return { top: $(el).offset().top - 200, id: el.id - } + }; }); - function closest() { - var h; - var top = $(window).scrollTop(); - var i = headings.length; + function closest () { + let h; + const top = $(window).scrollTop(); + let i = headings.length; while (i--) { h = headings[i]; if (top >= h.top) return h; } } - var currentApiPrefix; - var parentMenuSelector; - var lastApiPrefix; + let currentApiPrefix; + let parentMenuSelector; + let lastApiPrefix; if (document.readyState !== 'loading') { const languageElement = document.getElementById('languageData'); @@ -53,70 +53,63 @@ $(function(){ const currentLanguage = window.location.pathname.split('/')[1]; const matchedLang = languagesData.find(lang => lang.code === currentLanguage); langDisplay.textContent = matchedLang ? matchedLang.name : 'English'; - } + } } - $(document).scroll(function() { - var h = closest(); + $(document).scroll(function () { + const h = closest(); if (!h) return; currentApiPrefix = h.id.split('.')[0]; - parentMenuSelector = '#'+ currentApiPrefix + '-menu'; + parentMenuSelector = '#' + currentApiPrefix + '-menu'; $(parentMenuSelector).addClass('active'); - if (lastApiPrefix && (lastApiPrefix != currentApiPrefix)) { - $('#'+ lastApiPrefix + '-menu').removeClass('active'); + if (lastApiPrefix && (lastApiPrefix !== currentApiPrefix)) { + $('#' + lastApiPrefix + '-menu').removeClass('active'); } $('#menu li a').removeClass('active'); - var a = $('a[href="#' + h.id + '"]'); + const a = $('a[href="#' + h.id + '"]'); a.addClass('active'); lastApiPrefix = currentApiPrefix.split('.')[0]; - }) + }); // i18n notice if (readCookie('i18nClose')) { $('#i18n-notice-box').hide(); - $("#i18n-notice-box").addClass("hidden"); - } - else { + $('#i18n-notice-box').addClass('hidden'); + } else { $('#close-i18n-notice-box').on('click', function () { $('#i18n-notice-box').hide(); - $("#i18n-notice-box").addClass("hidden"); + $('#i18n-notice-box').addClass('hidden'); createCookie('i18nClose', 1); - }) + }); } -}) - +}); - -function createCookie(name, value, days) { - var expires; +function createCookie (name, value, days) { + let expires; if (days) { - var date = new Date(); + const date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); - expires = "; expires=" + date.toGMTString(); + expires = '; expires=' + date.toGMTString(); } else { - expires = ""; + expires = ''; } - document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/"; + document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + expires + '; path=/'; } -function readCookie(name) { - var nameEQ = encodeURIComponent(name) + "="; - var ca = document.cookie.split(';'); - for (var i = 0; i < ca.length; i++) { - var c = ca[i]; +function readCookie (name) { + const nameEQ = encodeURIComponent(name) + '='; + const ca = document.cookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); } return null; } - -function eraseCookie(name) { - createCookie(name, "", -1); -} \ No newline at end of file diff --git a/js/copycode.js b/js/copycode.js index 2174710746..b4074846d4 100644 --- a/js/copycode.js +++ b/js/copycode.js @@ -1,4 +1,4 @@ -const codeBlocks = document.querySelectorAll("pre:has(code)"); +const codeBlocks = document.querySelectorAll('pre:has(code)'); codeBlocks.forEach((block) => { // Only add button if browser supports Clipboard API @@ -6,53 +6,53 @@ codeBlocks.forEach((block) => { const button = createCopyButton(); block.appendChild(button); - block.setAttribute("tabindex", 0); // Add keyboard a11y for

+  block.setAttribute('tabindex', 0); // Add keyboard a11y for 

 
-  button.addEventListener("click", async () => {
+  button.addEventListener('click', async () => {
     await copyCode(block, button);
   });
 });
 
-function createCopyButton() {
-  const button = document.createElement("button");
+function createCopyButton () {
+  const button = document.createElement('button');
   setButtonAttributes(button, {
-    type: "button", // button doesn't act as a submit button
-    title: "copy code",
-    "aria-label": "click to copy code",
+    type: 'button', // button doesn't act as a submit button
+    title: 'copy code',
+    'aria-label': 'click to copy code'
   });
   return button;
 }
 
-function setButtonAttributes(button, attributes) {
+function setButtonAttributes (button, attributes) {
   for (const [key, value] of Object.entries(attributes)) {
     button.setAttribute(key, value);
   }
 }
 
-async function copyCode(block, button) {
-  const code = block.querySelector("code");
+async function copyCode (block, button) {
+  const code = block.querySelector('code');
   let text = code.innerText;
   // remove "$" and space if exists at the beginning of the code
-  text = text.replace(/^\$\s?/,"");
+  text = text.replace(/^\$\s?/, '');
 
   try {
     await navigator.clipboard.writeText(text);
-    updateButtonState(button, "copied", "code is copied!");
+    updateButtonState(button, 'copied', 'code is copied!');
   } catch {
-    updateButtonState(button, "failed", "failed!");
+    updateButtonState(button, 'failed', 'failed!');
   }
 }
 
-function updateButtonState(button, statusClass, ariaLabel) {
-  button.setAttribute("aria-live", "polite");
-  button.setAttribute("aria-label", ariaLabel);
+function updateButtonState (button, statusClass, ariaLabel) {
+  button.setAttribute('aria-live', 'polite');
+  button.setAttribute('aria-label', ariaLabel);
   button.classList.add(statusClass);
 
   // Clear any existing timer
   if (button.dataset.timerId) clearTimeout(Number(button.dataset.timerId));
   const timer = setTimeout(() => {
     button.classList.remove(statusClass);
-    button.setAttribute("aria-label", "click to copy code");
+    button.setAttribute('aria-label', 'click to copy code');
   }, 1000);
 
   button.dataset.timerId = timer;
diff --git a/js/menu.js b/js/menu.js
index 4b46b66641..0698ed7d6f 100644
--- a/js/menu.js
+++ b/js/menu.js
@@ -1,205 +1,202 @@
 // It uses `window.matchMedia` instead of `window.addEventListener('resize')` because `matchMedia` performs better by not changing its value with every screen resize.
-const mobileScreen = window.matchMedia("(max-width: 1110px)");
+const mobileScreen = window.matchMedia('(max-width: 1110px)');
 let isSmallScreen = mobileScreen?.matches;
-const tocScreen = window.matchMedia("(max-width: 800px)");
+const tocScreen = window.matchMedia('(max-width: 800px)');
 let isTocScreen = tocScreen.matches;
 
-mobileScreen?.addEventListener("change", (event) => {
-	isSmallScreen = event.matches
+mobileScreen?.addEventListener('change', (event) => {
+  isSmallScreen = event.matches;
 
   if (!isSmallScreen) {
-		document.body.classList.remove("no-scroll")
-	}
+    document.body.classList.remove('no-scroll');
+  }
 });
 
 // Desktop Menu
 
-const itemsMenu = document.querySelectorAll(".submenu");
-const navDrawers = document.querySelectorAll('#navmenu > li')
-let activeDrawer // active dropdown nav link
-
+const itemsMenu = document.querySelectorAll('.submenu');
+const navDrawers = document.querySelectorAll('#navmenu > li');
+let activeDrawer; // active dropdown nav link
 
 for (const el of itemsMenu) {
-	el.addEventListener("click", () => {
-		if (isSmallScreen || 'ontouchstart' in document.documentElement) {
-		// HANDLE ACTIVE LINKS IN DROPDOWN NAV	
-		// if no activeDrawer set then page was set in md logic
-		if (!activeDrawer) {
-			// remove default active link
-			removeActiveFromDrawers(navDrawers)
-			// set new active drawer to clicked
-			activeDrawer = el
-			// add active class
-			addActiveToDrawer(el)
-		// remove prev activeDrawer and set current to active
-		} else if (activeDrawer.id !== el.id) {
-			activeDrawer.querySelector('a').classList.remove('active')
-			addActiveToDrawer(el)
-			activeDrawer = el
-		}
-
-			for (const item of itemsMenu) {
+  el.addEventListener('click', () => {
+    if (isSmallScreen || 'ontouchstart' in document.documentElement) {
+      // HANDLE ACTIVE LINKS IN DROPDOWN NAV
+      // if no activeDrawer set then page was set in md logic
+      if (!activeDrawer) {
+        // remove default active link
+        removeActiveFromDrawers(navDrawers);
+        // set new active drawer to clicked
+        activeDrawer = el;
+        // add active class
+        addActiveToDrawer(el);
+        // remove prev activeDrawer and set current to active
+      } else if (activeDrawer.id !== el.id) {
+        activeDrawer.querySelector('a').classList.remove('active');
+        addActiveToDrawer(el);
+        activeDrawer = el;
+      }
+
+      for (const item of itemsMenu) {
         // close any open drawers on click next drawer
-				if (item.id !== el.id) {
-					item.classList.remove("open");
-				}
-			}
-			el.classList.toggle("open");
-		}
-	});
-
-	el.addEventListener("mouseenter", () => {
-		if (!isSmallScreen) {
-			el.classList.add("open");
-		}
-	});
-
-	el.addEventListener("mouseleave", () => {
-		if (!isSmallScreen) {
-			el.classList.remove("open");
-		}
-	});
+        if (item.id !== el.id) {
+          item.classList.remove('open');
+        }
+      }
+      el.classList.toggle('open');
+    }
+  });
+
+  el.addEventListener('mouseenter', () => {
+    if (!isSmallScreen) {
+      el.classList.add('open');
+    }
+  });
+
+  el.addEventListener('mouseleave', () => {
+    if (!isSmallScreen) {
+      el.classList.remove('open');
+    }
+  });
 }
 
 // Mobile Menu and Language Picker
 
-const linkItemsMenu = document.querySelectorAll(".submenu > a");
-const languageItems = document.querySelectorAll("#language-picker-menu > #navbar > #navmenu > .submenu > a");
-const languagePickerMenu = document.querySelector("#language-picker-menu > #navbar > #navmenu");
-const menu = document.querySelector("#navmenu");
-const overlay = document.querySelector("#overlay");
-const navButton = document.querySelector("#nav-button");
-const languagePickerButton = document.querySelector("#language-picker-button");
-
+const linkItemsMenu = document.querySelectorAll('.submenu > a');
+const languageItems = document.querySelectorAll('#language-picker-menu > #navbar > #navmenu > .submenu > a');
+const languagePickerMenu = document.querySelector('#language-picker-menu > #navbar > #navmenu');
+const menu = document.querySelector('#navmenu');
+const overlay = document.querySelector('#overlay');
+const navButton = document.querySelector('#nav-button');
+const languagePickerButton = document.querySelector('#language-picker-button');
 
 for (const el of linkItemsMenu) {
-	el.addEventListener("click", (e) => {
-		if (el.classList.contains("open")) {
-			el.classList.remove("open");
-		}
-		
-		if (isSmallScreen || 'ontouchstart' in document.documentElement) {
-			e.preventDefault();
-		}
-	});
-
+  el.addEventListener('click', (e) => {
+    if (el.classList.contains('open')) {
+      el.classList.remove('open');
+    }
+
+    if (isSmallScreen || 'ontouchstart' in document.documentElement) {
+      e.preventDefault();
+    }
+  });
 }
 
 for (const el of languageItems) {
-	el.addEventListener("click", (e) => {
-		const href = el.getAttribute("href");
+  el.addEventListener('click', (e) => {
+    const href = el.getAttribute('href');
 
-		if (href && href !== "#") {
-			languagePickerMenu?.classList.remove("opens");
-			overlay?.classList.remove("blurs");
-			document.body.classList.remove("no-scroll");
+    if (href && href !== '#') {
+      languagePickerMenu?.classList.remove('opens');
+      overlay?.classList.remove('blurs');
+      document.body.classList.remove('no-scroll');
 
-			window.location.href = href;
-		}
-	});
+      window.location.href = href;
+    }
+  });
 }
 
-navButton?.addEventListener("click", () => {
-	const isLanguageMenuOpen = languagePickerMenu?.classList.contains("opens");
-	if (isLanguageMenuOpen) {
-		languagePickerMenu?.classList.remove("opens");
-		menu?.classList.toggle("opens");
-	} else {
-		menu?.classList.toggle("opens");
-		overlay?.classList.toggle("blurs");
-		document.body.classList.toggle("no-scroll");
-	}
+navButton?.addEventListener('click', () => {
+  const isLanguageMenuOpen = languagePickerMenu?.classList.contains('opens');
+  if (isLanguageMenuOpen) {
+    languagePickerMenu?.classList.remove('opens');
+    menu?.classList.toggle('opens');
+  } else {
+    menu?.classList.toggle('opens');
+    overlay?.classList.toggle('blurs');
+    document.body.classList.toggle('no-scroll');
+  }
 });
 
-languagePickerButton?.addEventListener("click", () => {
-	const isMenuOpen = menu?.classList.contains("opens");
-	if (isMenuOpen) {
-		menu?.classList.remove("opens");
-		languagePickerMenu?.classList.toggle("opens");
-	} else {
-		languagePickerMenu?.classList.toggle("opens");
-		overlay?.classList.toggle("blurs");
-		document.body.classList.toggle("no-scroll");
-	}
+languagePickerButton?.addEventListener('click', () => {
+  const isMenuOpen = menu?.classList.contains('opens');
+  if (isMenuOpen) {
+    menu?.classList.remove('opens');
+    languagePickerMenu?.classList.toggle('opens');
+  } else {
+    languagePickerMenu?.classList.toggle('opens');
+    overlay?.classList.toggle('blurs');
+    document.body.classList.toggle('no-scroll');
+  }
 });
 
-overlay?.addEventListener("click", () => {
-	if (menu?.classList.contains("opens")) {
-		menu.classList.remove("opens");
-	}
-	if (languagePickerMenu?.classList.contains("opens")) {
-		languagePickerMenu.classList.remove("opens");
-	}
-	overlay.classList.remove("blurs");
-	document.body.classList.remove("no-scroll");
+overlay?.addEventListener('click', () => {
+  if (menu?.classList.contains('opens')) {
+    menu.classList.remove('opens');
+  }
+  if (languagePickerMenu?.classList.contains('opens')) {
+    languagePickerMenu.classList.remove('opens');
+  }
+  overlay.classList.remove('blurs');
+  document.body.classList.remove('no-scroll');
 });
 
 document
-	.querySelector(`.submenu-content a[href="{document.location.pathname}"]`)
-	?.classList.add("current");
+  .querySelector('.submenu-content a[href="{document.location.pathname}"]')
+  ?.classList.add('current');
 
 // when active is unknown, loop over and remove any active link
-function removeActiveFromDrawers(navDrawers) {
+function removeActiveFromDrawers (navDrawers) {
   for (const item of navDrawers) {
-    item.querySelector('a').classList.remove('active')
+    item.querySelector('a').classList.remove('active');
   }
 }
 // add active to known link
-function addActiveToDrawer(drawer) {
-	drawer.querySelector('a').classList.add('active')
+function addActiveToDrawer (drawer) {
+  drawer.querySelector('a').classList.add('active');
 }
 
-// TOC 
-const toggleBtn = document.getElementById("menu-toggle");
-const tocList = document.getElementById("menu");
+// TOC
+const toggleBtn = document.getElementById('menu-toggle');
+const tocList = document.getElementById('menu');
 
-function updateTocVisibility() {
-	if (isTocScreen) {
-	  toggleBtn?.classList.add("show");
-	} else {
-	  toggleBtn?.classList.remove("show");
-	}
+function updateTocVisibility () {
+  if (isTocScreen) {
+    toggleBtn?.classList.add('show');
+  } else {
+    toggleBtn?.classList.remove('show');
   }
+}
 
 // toc button on page load
 updateTocVisibility();
 
 // Listen for changes in screen size
-tocScreen.addEventListener("change", (event) => {
+tocScreen.addEventListener('change', (event) => {
   isTocScreen = event.matches;
   updateTocVisibility();
 });
 
 // Toggle toc menu on button click
-toggleBtn?.addEventListener("click", (e) => {
-	toggleBtn.classList.toggle("rotate");
-  if(tocList?.classList.contains("open")) {
-	tocList.classList.remove("open");
+toggleBtn?.addEventListener('click', (e) => {
+  toggleBtn.classList.toggle('rotate');
+  if (tocList?.classList.contains('open')) {
+    tocList.classList.remove('open');
   } else {
-	tocList.classList.add("open");
+    tocList.classList.add('open');
   }
 });
-  
+
 // Open/Close sub TOC content on click
-document.querySelectorAll("#menu > li > a").forEach((link) => {
-	link.addEventListener("click", function (event) {
-	  event.preventDefault(); // stop navigation to submenu
-  
-	  // Find the closest parent 
  • - const closestLiParent = link.closest("li"); - const childUlSubMenu = closestLiParent.children[1]; - - // If submenu is already active, remove "active" class (toggle behavior) - if (childUlSubMenu?.classList.contains("active")) { - childUlSubMenu.classList.remove("active"); - } else { - // Remove "active" from all other submenus - document.querySelectorAll("#menu > li > ul").forEach((subMenu) => { - subMenu.classList.remove("active"); - }); - - // Add "active" to the clicked submenu - childUlSubMenu?.classList.add("active"); - } - }); +document.querySelectorAll('#menu > li > a').forEach((link) => { + link.addEventListener('click', function (event) { + event.preventDefault(); // stop navigation to submenu + + // Find the closest parent
  • + const closestLiParent = link.closest('li'); + const childUlSubMenu = closestLiParent.children[1]; + + // If submenu is already active, remove "active" class (toggle behavior) + if (childUlSubMenu?.classList.contains('active')) { + childUlSubMenu.classList.remove('active'); + } else { + // Remove "active" from all other submenus + document.querySelectorAll('#menu > li > ul').forEach((subMenu) => { + subMenu.classList.remove('active'); + }); + + // Add "active" to the clicked submenu + childUlSubMenu?.classList.add('active'); + } }); +}); diff --git a/js/theme.js b/js/theme.js index 5e18e0481f..e1b816655e 100644 --- a/js/theme.js +++ b/js/theme.js @@ -1,100 +1,99 @@ -const themeWatcher = watchColorSchemeChange((colorScheme) => { +watchColorSchemeChange((_error, colorScheme) => { if (!hasLocalStorage()) { document?.addEventListener('DOMContentLoaded', () => { // remove icon - toggle not supported - document.querySelector('#theme-toggle').remove() + document.querySelector('#theme-toggle').remove(); setTheme(colorScheme); - }) + }); } else { // user's PS system theme settings - const systemTheme = localStorage.getItem('system-theme') - // setting stored in local storage - const localTheme = localStorage.getItem('local-theme') + const systemTheme = localStorage.getItem('system-theme'); + // setting stored in local storage + const localTheme = localStorage.getItem('local-theme'); // // if no local theme set - system is default if (localTheme === null) { - setTheme(colorScheme) - localStorage.setItem('system-theme', colorScheme || 'light') + setTheme(colorScheme); + localStorage.setItem('system-theme', colorScheme || 'light'); // page load - load any stored themes or set theme } else { - // listen for system changes, update if any - if (colorScheme != systemTheme) { - setTheme(colorScheme) - localStorage.setItem('system-theme', colorScheme || 'light') - // override local theme - localStorage.removeItem('local-theme') + // listen for system changes, update if any + if (colorScheme !== systemTheme) { + setTheme(colorScheme); + localStorage.setItem('system-theme', colorScheme || 'light'); + // override local theme + localStorage.removeItem('local-theme'); } else { // else load local theme if (localTheme === 'light') { - lightModeOn() + lightModeOn(); } else if (localTheme === 'dark') { - darkModeOn() + darkModeOn(); } } } // wait for load then and add listner on button document.addEventListener('DOMContentLoaded', () => { - document .querySelector('#theme-toggle') - .addEventListener('click', toggleLocalStorageTheme) - }) + .addEventListener('click', toggleLocalStorageTheme); + }); } -}) +}); // set the theme to given value -function setTheme(theme) { - // only support dark else any other defaults to light +function setTheme (theme) { + // only support dark else any other defaults to light if (theme === 'dark') { - darkModeOn() + darkModeOn(); } else { - lightModeOn() + lightModeOn(); } } // toggle btwn themes or set a theme if none set -function toggleLocalStorageTheme(e) { - const localTheme = localStorage.getItem('local-theme') +function toggleLocalStorageTheme (e) { + const localTheme = localStorage.getItem('local-theme'); if (localTheme === 'light') { - localStorage.setItem('local-theme', 'dark') - darkModeOn() + localStorage.setItem('local-theme', 'dark'); + darkModeOn(); } else if (localTheme === 'dark') { - localStorage.setItem('local-theme', 'light') - lightModeOn() + localStorage.setItem('local-theme', 'light'); + lightModeOn(); // localTheme still null } else { // need to check page state then set if (darkModeState()) { - localStorage.setItem('local-theme', 'light') - lightModeOn() + localStorage.setItem('local-theme', 'light'); + lightModeOn(); } else { - localStorage.setItem('local-theme', 'dark') - darkModeOn() + localStorage.setItem('local-theme', 'dark'); + darkModeOn(); } } } -function darkModeOn() { - document?.documentElement?.classList?.remove('light-mode') - document?.documentElement?.classList?.add('dark-mode') +function darkModeOn () { + document?.documentElement?.classList?.remove('light-mode'); + document?.documentElement?.classList?.add('dark-mode'); } -function lightModeOn() { - document?.documentElement?.classList.remove('dark-mode') - document?.documentElement?.classList?.add('light-mode') +function lightModeOn () { + document?.documentElement?.classList.remove('dark-mode'); + document?.documentElement?.classList?.add('light-mode'); } -function darkModeState() { - return document?.documentElement?.classList.contains('dark-mode') +function darkModeState () { + return document?.documentElement?.classList.contains('dark-mode'); } -function hasLocalStorage() { - return typeof Storage !== 'undefined' +function hasLocalStorage () { + return typeof Storage !== 'undefined'; } -function watchColorSchemeChange(callback) { +function watchColorSchemeChange (callback) { // query user's machine for system setting & use that - const darkMediaQuery = window?.matchMedia('(prefers-color-scheme: dark)') + const darkMediaQuery = window?.matchMedia('(prefers-color-scheme: dark)'); const handleChange = (event) => { - const newColorScheme = event?.matches ? 'dark' : 'light' - callback(newColorScheme) - } - darkMediaQuery.addEventListener('change', handleChange) + const newColorScheme = event?.matches ? 'dark' : 'light'; + callback(undefined, newColorScheme); + }; + darkMediaQuery.addEventListener('change', handleChange); // handle init load value - callback(darkMediaQuery.matches ? 'dark': 'light') + callback(undefined, darkMediaQuery.matches ? 'dark' : 'light'); // Return a function to remove the event listener - return () => darkMediaQuery.removeEventListener('change', handleChange) + return () => darkMediaQuery.removeEventListener('change', handleChange); } diff --git a/package-lock.json b/package-lock.json index ce7af6e62f..afc520d36a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,7 @@ "devDependencies": { "eslint": "^8.54.0", "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-markdown": "^2.2.1", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" + "eslint-plugin-markdown": "^2.2.1" } }, "node_modules/@eslint-community/eslint-utils": { @@ -157,7 +154,8 @@ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/mdast": { "version": "3.0.15", @@ -170,9 +168,9 @@ } }, "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "dev": true, "license": "MIT" }, @@ -262,6 +260,7 @@ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -279,6 +278,7 @@ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -300,6 +300,7 @@ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -321,6 +322,7 @@ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -340,6 +342,7 @@ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -359,6 +362,7 @@ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -382,6 +386,7 @@ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -416,6 +421,7 @@ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "semver": "^7.0.0" } @@ -426,6 +432,7 @@ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -439,6 +446,7 @@ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -561,6 +569,7 @@ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -579,6 +588,7 @@ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -597,6 +607,7 @@ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -640,6 +651,7 @@ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -658,6 +670,7 @@ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -689,6 +702,7 @@ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -750,6 +764,7 @@ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -763,6 +778,7 @@ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" } @@ -773,6 +789,7 @@ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -786,6 +803,7 @@ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -801,6 +819,7 @@ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hasown": "^2.0.0" } @@ -811,6 +830,7 @@ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -928,6 +948,7 @@ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -940,6 +961,7 @@ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.1" } @@ -950,6 +972,7 @@ "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "debug": "^3.2.7" }, @@ -968,6 +991,7 @@ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.1" } @@ -978,6 +1002,7 @@ "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" @@ -998,6 +1023,7 @@ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -1014,6 +1040,7 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=4" } @@ -1024,6 +1051,7 @@ "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -1056,6 +1084,7 @@ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.1" } @@ -1066,6 +1095,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -1095,6 +1125,7 @@ "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "builtins": "^5.0.1", "eslint-plugin-es": "^4.1.0", @@ -1121,6 +1152,7 @@ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -1134,6 +1166,7 @@ "integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1167,6 +1200,7 @@ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -1186,6 +1220,7 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=10" } @@ -1356,6 +1391,7 @@ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-callable": "^1.1.3" } @@ -1373,6 +1409,7 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1383,6 +1420,7 @@ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1402,6 +1440,7 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1412,6 +1451,7 @@ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -1432,6 +1472,7 @@ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -1501,6 +1542,7 @@ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -1518,6 +1560,7 @@ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -1538,6 +1581,7 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1558,6 +1602,7 @@ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -1571,6 +1616,7 @@ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -1584,6 +1630,7 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -1597,6 +1644,7 @@ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -1613,6 +1661,7 @@ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1682,6 +1731,7 @@ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -1723,6 +1773,7 @@ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -1740,6 +1791,7 @@ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -1753,6 +1805,7 @@ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -1770,6 +1823,7 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -1783,6 +1837,7 @@ "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "hasown": "^2.0.2" }, @@ -1799,6 +1854,7 @@ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -1815,6 +1871,7 @@ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -1876,6 +1933,7 @@ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -1889,6 +1947,7 @@ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -1915,6 +1974,7 @@ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -1932,6 +1992,7 @@ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -1948,6 +2009,7 @@ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -1964,6 +2026,7 @@ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -1980,6 +2043,7 @@ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -1996,6 +2060,7 @@ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -2008,7 +2073,8 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/isexe": { "version": "2.0.0", @@ -2057,6 +2123,7 @@ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.0" }, @@ -2180,6 +2247,7 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2204,6 +2272,7 @@ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -2217,6 +2286,7 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" } @@ -2227,6 +2297,7 @@ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -2246,6 +2317,7 @@ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2265,6 +2337,7 @@ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2280,6 +2353,7 @@ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2419,7 +2493,8 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/possible-typed-array-names": { "version": "1.0.0", @@ -2427,6 +2502,7 @@ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" } @@ -2478,6 +2554,7 @@ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -2497,6 +2574,7 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -2510,6 +2588,7 @@ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -2590,6 +2669,7 @@ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -2609,6 +2689,7 @@ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -2627,6 +2708,7 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -2637,6 +2719,7 @@ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2655,6 +2738,7 @@ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -2694,6 +2778,7 @@ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2713,6 +2798,7 @@ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2732,6 +2818,7 @@ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2747,6 +2834,7 @@ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2778,6 +2866,7 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -2814,6 +2903,7 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -2834,6 +2924,7 @@ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -2873,6 +2964,7 @@ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -2888,6 +2980,7 @@ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -2908,6 +3001,7 @@ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -2929,6 +3023,7 @@ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -2950,6 +3045,7 @@ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -3006,6 +3102,7 @@ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -3023,6 +3120,7 @@ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", diff --git a/package.json b/package.json index 65bc52a33f..9d732fece8 100644 --- a/package.json +++ b/package.json @@ -3,53 +3,11 @@ "version": "0.0.0", "private": true, "scripts": { - "test": "eslint --ignore-path .gitignore --ignore-pattern _includes/readmes/ \"**/*.md\"" + "test": "eslint --ignore-path .gitignore --ignore-pattern _includes/readmes/ \"**/*.js\" \"**/*.md\"" }, "devDependencies": { "eslint": "^8.54.0", "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-markdown": "^2.2.1", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" - }, - "eslintConfig": { - "extends": [ - "standard", - "plugin:markdown/recommended" - ], - "plugins": [ - "markdown" - ], - "overrides": [ - { - "files": "**/*.md", - "processor": "markdown/markdown" - }, - { - "files": "**/*.md/*.js", - "rules": { - "array-callback-return": "off", - "no-var": "error", - "n/handle-callback-err": "off", - "object-shorthand": "error", - "prefer-arrow-callback": "error", - "prefer-template": "error" - } - }, - { - "files": [ - "**/3x/*.md/*.js", - "**/4x/*.md/*.js", - "**/guide/migrating-4.md/*.js" - ], - "rules": { - "no-var": "off", - "object-shorthand": "off", - "prefer-arrow-callback": "off", - "prefer-template": "off" - } - } - ] + "eslint-plugin-markdown": "^2.2.1" } }