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"
}
}