this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #7 from jessejanderson/linting

authored by

Jesse J. Anderson and committed by
GitHub
cca6b69c 224fcd0b

+1327 -92
+15
.eslintrc.json
··· 1 + { 2 + "extends": ["eslint:recommended", "plugin:prettier/recommended"], 3 + "env": { 4 + "browser": true, 5 + "webextensions": true, 6 + "es6": true 7 + }, 8 + "parserOptions": { 9 + "ecmaVersion": 2020, 10 + "sourceType": "module" 11 + }, 12 + "rules": { 13 + // Add any additional rules here 14 + } 15 + }
+1
.gitignore
··· 1 1 **/.DS_Store 2 2 extension_packages/* 3 3 extension_packages 4 + node_modules/
+6
.prettierrc
··· 1 + { 2 + "singleQuote": false, 3 + "semi": false, 4 + "tabWidth": 2, 5 + "trailingComma": "es5" 6 + }
+42 -33
background.js
··· 1 1 // Set up cross-browser compatibility 2 - const runtime = typeof browser !== 'undefined' ? browser.runtime : chrome.runtime; 3 - const tabs = typeof browser !== 'undefined' ? browser.tabs : chrome.tabs; 4 - const storage = typeof browser !== 'undefined' ? browser.storage.local : chrome.storage.local; 5 - const action = typeof browser !== 'undefined' ? browser.browserAction : chrome.action; 2 + const runtime = 3 + typeof browser !== "undefined" ? browser.runtime : chrome.runtime 4 + const tabs = typeof browser !== "undefined" ? browser.tabs : chrome.tabs 5 + const storage = 6 + typeof browser !== "undefined" ? browser.storage.local : chrome.storage.local 7 + const action = 8 + typeof browser !== "undefined" ? browser.browserAction : chrome.action 6 9 7 10 // On extension installation, check if privacy consent was already accepted and show it if not 8 11 runtime.onInstalled.addListener(() => { 9 12 storage.get("privacyConsentAccepted", ({ privacyConsentAccepted }) => { 10 - if (typeof privacyConsentAccepted === "undefined" || !privacyConsentAccepted) { 11 - tabs.create({ url: "privacy_consent.html" }); 13 + if ( 14 + typeof privacyConsentAccepted === "undefined" || 15 + !privacyConsentAccepted 16 + ) { 17 + tabs.create({ url: "privacy_consent.html" }) 12 18 } 13 - }); 14 - }); 19 + }) 20 + }) 15 21 16 22 // If the message 'SHOW_CONSENT' is received, open the privacy consent tab 17 - runtime.onMessage.addListener((message, sender, sendResponse) => { 18 - if (message.type === 'SHOW_CONSENT') { 19 - tabs.create({ url: "privacy_consent.html" }); 23 + runtime.onMessage.addListener((message) => { 24 + if (message.type === "SHOW_CONSENT") { 25 + tabs.create({ url: "privacy_consent.html" }) 20 26 } 21 - }); 27 + }) 22 28 23 29 // Map to store tabs with DIDs 24 - const tabsWithDID = new Map(); 30 + const tabsWithDID = new Map() 25 31 26 32 // URL of the Bluesky Web Applications 27 - const bskyAppUrl = 'https://staging.bsky.app'; 33 + const bskyAppUrl = "https://staging.bsky.app" 28 34 29 35 // Function to set the extension icon 30 36 function setIcon(tabId, iconName) { 31 - action.setIcon({ path: iconName, tabId }); 37 + action.setIcon({ path: iconName, tabId }) 32 38 } 33 39 34 40 // On extension installation, set the icon to gray for all tabs 35 41 runtime.onInstalled.addListener(() => { 36 42 tabs.query({}, (tabs) => { 37 - tabs.forEach((tab) => setIcon(tab.id, 'logo48_gray.png')); 38 - }); 39 - }); 43 + tabs.forEach((tab) => setIcon(tab.id, "logo48_gray.png")) 44 + }) 45 + }) 40 46 41 47 // When a message is received from the DNS check, set the icon color to blue. 42 - runtime.onMessage.addListener((message, sender, sendResponse) => { 48 + runtime.onMessage.addListener((message, sender) => { 43 49 if (message.type === "DID_FOUND") { 44 - setIcon(sender.tab.id, "logo48.png"); 45 - tabsWithDID.set(sender.tab.id, message.did); 50 + setIcon(sender.tab.id, "logo48.png") 51 + tabsWithDID.set(sender.tab.id, message.did) 46 52 } else { 47 - setIcon(sender.tab.id, "logo48_gray.png"); 48 - tabsWithDID.delete(sender.tab.id); 53 + setIcon(sender.tab.id, "logo48_gray.png") 54 + tabsWithDID.delete(sender.tab.id) 49 55 } 50 - }); 56 + }) 51 57 52 58 // Open the consent page if it hasn't been accepted and the user clicks on the extension icon 53 - action.onClicked.addListener((tab) => { 59 + action.onClicked.addListener(() => { 54 60 storage.get("privacyConsentAccepted", ({ privacyConsentAccepted }) => { 55 - if (typeof privacyConsentAccepted === "undefined" || !privacyConsentAccepted) { 56 - tabs.create({ url: "privacy_consent.html" }); 61 + if ( 62 + typeof privacyConsentAccepted === "undefined" || 63 + !privacyConsentAccepted 64 + ) { 65 + tabs.create({ url: "privacy_consent.html" }) 57 66 } 58 - }); 59 - }); 67 + }) 68 + }) 60 69 61 70 // When the extension icon is clicked, open the profile page if there's a DID 62 71 action.onClicked.addListener((tab) => { 63 - const did = tabsWithDID.get(tab.id); 72 + const did = tabsWithDID.get(tab.id) 64 73 if (did) { 65 - const newUrl = `${bskyAppUrl}/profile/${did}`; 66 - tabs.create({ url: newUrl }); 74 + const newUrl = `${bskyAppUrl}/profile/${did}` 75 + tabs.create({ url: newUrl }) 67 76 } 68 - }); 77 + })
+51 -50
content.js
··· 1 1 // Set up cross-browser compatibility 2 - const runtime = typeof browser !== 'undefined' ? browser.runtime : chrome.runtime; 3 - const tabs = typeof browser !== 'undefined' ? browser.tabs : chrome.tabs; 4 - const storage = typeof browser !== 'undefined' ? browser.storage.local : chrome.storage.local; 2 + const runtime = 3 + typeof browser !== "undefined" ? browser.runtime : chrome.runtime 4 + const storage = 5 + typeof browser !== "undefined" ? browser.storage.local : chrome.storage.local 5 6 6 - // Main function to perform actions, but only if the privacy consent has been accepted 7 - function performAction(privacyConsentAccepted) { 8 - // If the user has accepted the privacy consent 9 - if (privacyConsentAccepted) { 10 - // Function to get the domain name from the current hostname 11 - function getDomainName() { 12 - const hostname = window.location.hostname; 13 - return hostname.replace(/^www\./, ''); 14 - } 7 + // Function to get the domain name from the current hostname 8 + function getDomainName() { 9 + const hostname = window.location.hostname 10 + return hostname.replace(/^www\./, "") 11 + } 15 12 16 - // Function to check for a DID in the domain's TXT records 17 - async function checkForDID(domain) { 18 - // We use Google's DNS over HTTPS API to resolve the TXT record 19 - const response = await fetch( 20 - `https://dns.google/resolve?name=_atproto.${domain}&type=TXT` 21 - ); 22 - const data = await response.json(); 13 + // Function to check for a DID in the domain's TXT records 14 + async function checkForDID(domain) { 15 + // We use Google's DNS over HTTPS API to resolve the TXT record 16 + const response = await fetch( 17 + `https://dns.google/resolve?name=_atproto.${domain}&type=TXT` 18 + ) 19 + const data = await response.json() 23 20 24 - // We use the TXT record type to avoid CORS issues 25 - const records = data?.Answer?.filter((record) => record.type === 16) || []; 21 + // We use the TXT record type to avoid CORS issues 22 + const records = data?.Answer?.filter((record) => record.type === 16) || [] 26 23 27 - // We filter out all records that are not TXT records 28 - const didRecord = records.find((record) => 29 - record.data.includes("did=did:plc:") 30 - ); 24 + // We filter out all records that are not TXT records 25 + const didRecord = records.find((record) => 26 + record.data.includes("did=did:plc:") 27 + ) 31 28 32 - // We return the DID if we found one 33 - return didRecord ? didRecord.data.replace("did=", "") : null; 34 - } 29 + // We return the DID if we found one 30 + return didRecord ? didRecord.data.replace("did=", "") : null 31 + } 35 32 36 - // We check for a DID on the current domain 37 - ;(async function () { 38 - const domain = getDomainName() 39 - const did = await checkForDID(domain) 33 + // Main function to perform actions, but only if the privacy consent has been accepted 34 + function performAction(privacyConsentAccepted) { 35 + // If the user has accepted the privacy consent 36 + if (privacyConsentAccepted) { 37 + // We check for a DID on the current domain 38 + ;(async function () { 39 + const domain = getDomainName() 40 + const did = await checkForDID(domain) 40 41 41 - if (did) { 42 - runtime.sendMessage({ type: "DID_FOUND", did }) 43 - } else { 44 - runtime.sendMessage({ type: "DID_NOT_FOUND" }) 45 - } 46 - })(); 42 + if (did) { 43 + runtime.sendMessage({ type: "DID_FOUND", did }) 44 + } else { 45 + runtime.sendMessage({ type: "DID_NOT_FOUND" }) 46 + } 47 + })() 47 48 48 - // We listen for messages from the background script 49 - runtime.onMessage.addListener((message, sender, sendResponse) => { 50 - if (message.type === "GET_DID") { 51 - checkForDID(getDomainName()) 52 - .then((did) => sendResponse({ did })) 53 - .catch(() => sendResponse({ did: null })) 54 - return true // Indicate that the response will be sent asynchronously. 55 - } 56 - }); 49 + // We listen for messages from the background script 50 + runtime.onMessage.addListener((message, sender, sendResponse) => { 51 + if (message.type === "GET_DID") { 52 + checkForDID(getDomainName()) 53 + .then((did) => sendResponse({ did })) 54 + .catch(() => sendResponse({ did: null })) 55 + return true // Indicate that the response will be sent asynchronously. 56 + } 57 + }) 57 58 } else { 58 59 // Do nothing since the consent form has not been accepted. 59 - return; 60 + return 60 61 } 61 62 } 62 63 63 64 // Get the user's privacy consent from the storage and perform actions accordingly 64 65 storage.get("privacyConsentAccepted", ({ privacyConsentAccepted }) => { 65 - performAction(privacyConsentAccepted); 66 - }); 66 + performAction(privacyConsentAccepted) 67 + })
+1190
package-lock.json
··· 1 + { 2 + "name": "skylink", 3 + "lockfileVersion": 3, 4 + "requires": true, 5 + "packages": { 6 + "": { 7 + "devDependencies": { 8 + "eslint": "^8.39.0", 9 + "eslint-config-prettier": "^8.8.0", 10 + "eslint-plugin-prettier": "^4.2.1", 11 + "prettier": "^2.8.8" 12 + } 13 + }, 14 + "node_modules/@eslint-community/eslint-utils": { 15 + "version": "4.4.0", 16 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 17 + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 18 + "dev": true, 19 + "dependencies": { 20 + "eslint-visitor-keys": "^3.3.0" 21 + }, 22 + "engines": { 23 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 24 + }, 25 + "peerDependencies": { 26 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 27 + } 28 + }, 29 + "node_modules/@eslint-community/regexpp": { 30 + "version": "4.5.1", 31 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", 32 + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", 33 + "dev": true, 34 + "engines": { 35 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 36 + } 37 + }, 38 + "node_modules/@eslint/eslintrc": { 39 + "version": "2.0.2", 40 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", 41 + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", 42 + "dev": true, 43 + "dependencies": { 44 + "ajv": "^6.12.4", 45 + "debug": "^4.3.2", 46 + "espree": "^9.5.1", 47 + "globals": "^13.19.0", 48 + "ignore": "^5.2.0", 49 + "import-fresh": "^3.2.1", 50 + "js-yaml": "^4.1.0", 51 + "minimatch": "^3.1.2", 52 + "strip-json-comments": "^3.1.1" 53 + }, 54 + "engines": { 55 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 56 + }, 57 + "funding": { 58 + "url": "https://opencollective.com/eslint" 59 + } 60 + }, 61 + "node_modules/@eslint/js": { 62 + "version": "8.39.0", 63 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", 64 + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", 65 + "dev": true, 66 + "engines": { 67 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 68 + } 69 + }, 70 + "node_modules/@humanwhocodes/config-array": { 71 + "version": "0.11.8", 72 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 73 + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 74 + "dev": true, 75 + "dependencies": { 76 + "@humanwhocodes/object-schema": "^1.2.1", 77 + "debug": "^4.1.1", 78 + "minimatch": "^3.0.5" 79 + }, 80 + "engines": { 81 + "node": ">=10.10.0" 82 + } 83 + }, 84 + "node_modules/@humanwhocodes/module-importer": { 85 + "version": "1.0.1", 86 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 87 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 88 + "dev": true, 89 + "engines": { 90 + "node": ">=12.22" 91 + }, 92 + "funding": { 93 + "type": "github", 94 + "url": "https://github.com/sponsors/nzakas" 95 + } 96 + }, 97 + "node_modules/@humanwhocodes/object-schema": { 98 + "version": "1.2.1", 99 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 100 + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 101 + "dev": true 102 + }, 103 + "node_modules/@nodelib/fs.scandir": { 104 + "version": "2.1.5", 105 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 106 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 107 + "dev": true, 108 + "dependencies": { 109 + "@nodelib/fs.stat": "2.0.5", 110 + "run-parallel": "^1.1.9" 111 + }, 112 + "engines": { 113 + "node": ">= 8" 114 + } 115 + }, 116 + "node_modules/@nodelib/fs.stat": { 117 + "version": "2.0.5", 118 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 119 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 120 + "dev": true, 121 + "engines": { 122 + "node": ">= 8" 123 + } 124 + }, 125 + "node_modules/@nodelib/fs.walk": { 126 + "version": "1.2.8", 127 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 128 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 129 + "dev": true, 130 + "dependencies": { 131 + "@nodelib/fs.scandir": "2.1.5", 132 + "fastq": "^1.6.0" 133 + }, 134 + "engines": { 135 + "node": ">= 8" 136 + } 137 + }, 138 + "node_modules/acorn": { 139 + "version": "8.8.2", 140 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 141 + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 142 + "dev": true, 143 + "bin": { 144 + "acorn": "bin/acorn" 145 + }, 146 + "engines": { 147 + "node": ">=0.4.0" 148 + } 149 + }, 150 + "node_modules/acorn-jsx": { 151 + "version": "5.3.2", 152 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 153 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 154 + "dev": true, 155 + "peerDependencies": { 156 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 157 + } 158 + }, 159 + "node_modules/ajv": { 160 + "version": "6.12.6", 161 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 162 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 163 + "dev": true, 164 + "dependencies": { 165 + "fast-deep-equal": "^3.1.1", 166 + "fast-json-stable-stringify": "^2.0.0", 167 + "json-schema-traverse": "^0.4.1", 168 + "uri-js": "^4.2.2" 169 + }, 170 + "funding": { 171 + "type": "github", 172 + "url": "https://github.com/sponsors/epoberezkin" 173 + } 174 + }, 175 + "node_modules/ansi-regex": { 176 + "version": "5.0.1", 177 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 178 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 179 + "dev": true, 180 + "engines": { 181 + "node": ">=8" 182 + } 183 + }, 184 + "node_modules/ansi-styles": { 185 + "version": "4.3.0", 186 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 187 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 188 + "dev": true, 189 + "dependencies": { 190 + "color-convert": "^2.0.1" 191 + }, 192 + "engines": { 193 + "node": ">=8" 194 + }, 195 + "funding": { 196 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 197 + } 198 + }, 199 + "node_modules/argparse": { 200 + "version": "2.0.1", 201 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 202 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 203 + "dev": true 204 + }, 205 + "node_modules/balanced-match": { 206 + "version": "1.0.2", 207 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 208 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 209 + "dev": true 210 + }, 211 + "node_modules/brace-expansion": { 212 + "version": "1.1.11", 213 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 214 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 215 + "dev": true, 216 + "dependencies": { 217 + "balanced-match": "^1.0.0", 218 + "concat-map": "0.0.1" 219 + } 220 + }, 221 + "node_modules/callsites": { 222 + "version": "3.1.0", 223 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 224 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 225 + "dev": true, 226 + "engines": { 227 + "node": ">=6" 228 + } 229 + }, 230 + "node_modules/chalk": { 231 + "version": "4.1.2", 232 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 233 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 234 + "dev": true, 235 + "dependencies": { 236 + "ansi-styles": "^4.1.0", 237 + "supports-color": "^7.1.0" 238 + }, 239 + "engines": { 240 + "node": ">=10" 241 + }, 242 + "funding": { 243 + "url": "https://github.com/chalk/chalk?sponsor=1" 244 + } 245 + }, 246 + "node_modules/color-convert": { 247 + "version": "2.0.1", 248 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 249 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 250 + "dev": true, 251 + "dependencies": { 252 + "color-name": "~1.1.4" 253 + }, 254 + "engines": { 255 + "node": ">=7.0.0" 256 + } 257 + }, 258 + "node_modules/color-name": { 259 + "version": "1.1.4", 260 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 261 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 262 + "dev": true 263 + }, 264 + "node_modules/concat-map": { 265 + "version": "0.0.1", 266 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 267 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 268 + "dev": true 269 + }, 270 + "node_modules/cross-spawn": { 271 + "version": "7.0.3", 272 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 273 + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 274 + "dev": true, 275 + "dependencies": { 276 + "path-key": "^3.1.0", 277 + "shebang-command": "^2.0.0", 278 + "which": "^2.0.1" 279 + }, 280 + "engines": { 281 + "node": ">= 8" 282 + } 283 + }, 284 + "node_modules/debug": { 285 + "version": "4.3.4", 286 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 287 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 288 + "dev": true, 289 + "dependencies": { 290 + "ms": "2.1.2" 291 + }, 292 + "engines": { 293 + "node": ">=6.0" 294 + }, 295 + "peerDependenciesMeta": { 296 + "supports-color": { 297 + "optional": true 298 + } 299 + } 300 + }, 301 + "node_modules/deep-is": { 302 + "version": "0.1.4", 303 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 304 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 305 + "dev": true 306 + }, 307 + "node_modules/doctrine": { 308 + "version": "3.0.0", 309 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 310 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 311 + "dev": true, 312 + "dependencies": { 313 + "esutils": "^2.0.2" 314 + }, 315 + "engines": { 316 + "node": ">=6.0.0" 317 + } 318 + }, 319 + "node_modules/escape-string-regexp": { 320 + "version": "4.0.0", 321 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 322 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 323 + "dev": true, 324 + "engines": { 325 + "node": ">=10" 326 + }, 327 + "funding": { 328 + "url": "https://github.com/sponsors/sindresorhus" 329 + } 330 + }, 331 + "node_modules/eslint": { 332 + "version": "8.39.0", 333 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", 334 + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", 335 + "dev": true, 336 + "dependencies": { 337 + "@eslint-community/eslint-utils": "^4.2.0", 338 + "@eslint-community/regexpp": "^4.4.0", 339 + "@eslint/eslintrc": "^2.0.2", 340 + "@eslint/js": "8.39.0", 341 + "@humanwhocodes/config-array": "^0.11.8", 342 + "@humanwhocodes/module-importer": "^1.0.1", 343 + "@nodelib/fs.walk": "^1.2.8", 344 + "ajv": "^6.10.0", 345 + "chalk": "^4.0.0", 346 + "cross-spawn": "^7.0.2", 347 + "debug": "^4.3.2", 348 + "doctrine": "^3.0.0", 349 + "escape-string-regexp": "^4.0.0", 350 + "eslint-scope": "^7.2.0", 351 + "eslint-visitor-keys": "^3.4.0", 352 + "espree": "^9.5.1", 353 + "esquery": "^1.4.2", 354 + "esutils": "^2.0.2", 355 + "fast-deep-equal": "^3.1.3", 356 + "file-entry-cache": "^6.0.1", 357 + "find-up": "^5.0.0", 358 + "glob-parent": "^6.0.2", 359 + "globals": "^13.19.0", 360 + "grapheme-splitter": "^1.0.4", 361 + "ignore": "^5.2.0", 362 + "import-fresh": "^3.0.0", 363 + "imurmurhash": "^0.1.4", 364 + "is-glob": "^4.0.0", 365 + "is-path-inside": "^3.0.3", 366 + "js-sdsl": "^4.1.4", 367 + "js-yaml": "^4.1.0", 368 + "json-stable-stringify-without-jsonify": "^1.0.1", 369 + "levn": "^0.4.1", 370 + "lodash.merge": "^4.6.2", 371 + "minimatch": "^3.1.2", 372 + "natural-compare": "^1.4.0", 373 + "optionator": "^0.9.1", 374 + "strip-ansi": "^6.0.1", 375 + "strip-json-comments": "^3.1.0", 376 + "text-table": "^0.2.0" 377 + }, 378 + "bin": { 379 + "eslint": "bin/eslint.js" 380 + }, 381 + "engines": { 382 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 383 + }, 384 + "funding": { 385 + "url": "https://opencollective.com/eslint" 386 + } 387 + }, 388 + "node_modules/eslint-config-prettier": { 389 + "version": "8.8.0", 390 + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", 391 + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", 392 + "dev": true, 393 + "bin": { 394 + "eslint-config-prettier": "bin/cli.js" 395 + }, 396 + "peerDependencies": { 397 + "eslint": ">=7.0.0" 398 + } 399 + }, 400 + "node_modules/eslint-plugin-prettier": { 401 + "version": "4.2.1", 402 + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", 403 + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", 404 + "dev": true, 405 + "dependencies": { 406 + "prettier-linter-helpers": "^1.0.0" 407 + }, 408 + "engines": { 409 + "node": ">=12.0.0" 410 + }, 411 + "peerDependencies": { 412 + "eslint": ">=7.28.0", 413 + "prettier": ">=2.0.0" 414 + }, 415 + "peerDependenciesMeta": { 416 + "eslint-config-prettier": { 417 + "optional": true 418 + } 419 + } 420 + }, 421 + "node_modules/eslint-scope": { 422 + "version": "7.2.0", 423 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", 424 + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", 425 + "dev": true, 426 + "dependencies": { 427 + "esrecurse": "^4.3.0", 428 + "estraverse": "^5.2.0" 429 + }, 430 + "engines": { 431 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 432 + }, 433 + "funding": { 434 + "url": "https://opencollective.com/eslint" 435 + } 436 + }, 437 + "node_modules/eslint-visitor-keys": { 438 + "version": "3.4.0", 439 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", 440 + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", 441 + "dev": true, 442 + "engines": { 443 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 444 + }, 445 + "funding": { 446 + "url": "https://opencollective.com/eslint" 447 + } 448 + }, 449 + "node_modules/espree": { 450 + "version": "9.5.1", 451 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", 452 + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", 453 + "dev": true, 454 + "dependencies": { 455 + "acorn": "^8.8.0", 456 + "acorn-jsx": "^5.3.2", 457 + "eslint-visitor-keys": "^3.4.0" 458 + }, 459 + "engines": { 460 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 461 + }, 462 + "funding": { 463 + "url": "https://opencollective.com/eslint" 464 + } 465 + }, 466 + "node_modules/esquery": { 467 + "version": "1.5.0", 468 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 469 + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 470 + "dev": true, 471 + "dependencies": { 472 + "estraverse": "^5.1.0" 473 + }, 474 + "engines": { 475 + "node": ">=0.10" 476 + } 477 + }, 478 + "node_modules/esrecurse": { 479 + "version": "4.3.0", 480 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 481 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 482 + "dev": true, 483 + "dependencies": { 484 + "estraverse": "^5.2.0" 485 + }, 486 + "engines": { 487 + "node": ">=4.0" 488 + } 489 + }, 490 + "node_modules/estraverse": { 491 + "version": "5.3.0", 492 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 493 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 494 + "dev": true, 495 + "engines": { 496 + "node": ">=4.0" 497 + } 498 + }, 499 + "node_modules/esutils": { 500 + "version": "2.0.3", 501 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 502 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 503 + "dev": true, 504 + "engines": { 505 + "node": ">=0.10.0" 506 + } 507 + }, 508 + "node_modules/fast-deep-equal": { 509 + "version": "3.1.3", 510 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 511 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 512 + "dev": true 513 + }, 514 + "node_modules/fast-diff": { 515 + "version": "1.2.0", 516 + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 517 + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 518 + "dev": true 519 + }, 520 + "node_modules/fast-json-stable-stringify": { 521 + "version": "2.1.0", 522 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 523 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 524 + "dev": true 525 + }, 526 + "node_modules/fast-levenshtein": { 527 + "version": "2.0.6", 528 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 529 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 530 + "dev": true 531 + }, 532 + "node_modules/fastq": { 533 + "version": "1.15.0", 534 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 535 + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 536 + "dev": true, 537 + "dependencies": { 538 + "reusify": "^1.0.4" 539 + } 540 + }, 541 + "node_modules/file-entry-cache": { 542 + "version": "6.0.1", 543 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 544 + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 545 + "dev": true, 546 + "dependencies": { 547 + "flat-cache": "^3.0.4" 548 + }, 549 + "engines": { 550 + "node": "^10.12.0 || >=12.0.0" 551 + } 552 + }, 553 + "node_modules/find-up": { 554 + "version": "5.0.0", 555 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 556 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 557 + "dev": true, 558 + "dependencies": { 559 + "locate-path": "^6.0.0", 560 + "path-exists": "^4.0.0" 561 + }, 562 + "engines": { 563 + "node": ">=10" 564 + }, 565 + "funding": { 566 + "url": "https://github.com/sponsors/sindresorhus" 567 + } 568 + }, 569 + "node_modules/flat-cache": { 570 + "version": "3.0.4", 571 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 572 + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 573 + "dev": true, 574 + "dependencies": { 575 + "flatted": "^3.1.0", 576 + "rimraf": "^3.0.2" 577 + }, 578 + "engines": { 579 + "node": "^10.12.0 || >=12.0.0" 580 + } 581 + }, 582 + "node_modules/flatted": { 583 + "version": "3.2.7", 584 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 585 + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 586 + "dev": true 587 + }, 588 + "node_modules/fs.realpath": { 589 + "version": "1.0.0", 590 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 591 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 592 + "dev": true 593 + }, 594 + "node_modules/glob": { 595 + "version": "7.2.3", 596 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 597 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 598 + "dev": true, 599 + "dependencies": { 600 + "fs.realpath": "^1.0.0", 601 + "inflight": "^1.0.4", 602 + "inherits": "2", 603 + "minimatch": "^3.1.1", 604 + "once": "^1.3.0", 605 + "path-is-absolute": "^1.0.0" 606 + }, 607 + "engines": { 608 + "node": "*" 609 + }, 610 + "funding": { 611 + "url": "https://github.com/sponsors/isaacs" 612 + } 613 + }, 614 + "node_modules/glob-parent": { 615 + "version": "6.0.2", 616 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 617 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 618 + "dev": true, 619 + "dependencies": { 620 + "is-glob": "^4.0.3" 621 + }, 622 + "engines": { 623 + "node": ">=10.13.0" 624 + } 625 + }, 626 + "node_modules/globals": { 627 + "version": "13.20.0", 628 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", 629 + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", 630 + "dev": true, 631 + "dependencies": { 632 + "type-fest": "^0.20.2" 633 + }, 634 + "engines": { 635 + "node": ">=8" 636 + }, 637 + "funding": { 638 + "url": "https://github.com/sponsors/sindresorhus" 639 + } 640 + }, 641 + "node_modules/grapheme-splitter": { 642 + "version": "1.0.4", 643 + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 644 + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 645 + "dev": true 646 + }, 647 + "node_modules/has-flag": { 648 + "version": "4.0.0", 649 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 650 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 651 + "dev": true, 652 + "engines": { 653 + "node": ">=8" 654 + } 655 + }, 656 + "node_modules/ignore": { 657 + "version": "5.2.4", 658 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 659 + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 660 + "dev": true, 661 + "engines": { 662 + "node": ">= 4" 663 + } 664 + }, 665 + "node_modules/import-fresh": { 666 + "version": "3.3.0", 667 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 668 + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 669 + "dev": true, 670 + "dependencies": { 671 + "parent-module": "^1.0.0", 672 + "resolve-from": "^4.0.0" 673 + }, 674 + "engines": { 675 + "node": ">=6" 676 + }, 677 + "funding": { 678 + "url": "https://github.com/sponsors/sindresorhus" 679 + } 680 + }, 681 + "node_modules/imurmurhash": { 682 + "version": "0.1.4", 683 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 684 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 685 + "dev": true, 686 + "engines": { 687 + "node": ">=0.8.19" 688 + } 689 + }, 690 + "node_modules/inflight": { 691 + "version": "1.0.6", 692 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 693 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 694 + "dev": true, 695 + "dependencies": { 696 + "once": "^1.3.0", 697 + "wrappy": "1" 698 + } 699 + }, 700 + "node_modules/inherits": { 701 + "version": "2.0.4", 702 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 703 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 704 + "dev": true 705 + }, 706 + "node_modules/is-extglob": { 707 + "version": "2.1.1", 708 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 709 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 710 + "dev": true, 711 + "engines": { 712 + "node": ">=0.10.0" 713 + } 714 + }, 715 + "node_modules/is-glob": { 716 + "version": "4.0.3", 717 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 718 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 719 + "dev": true, 720 + "dependencies": { 721 + "is-extglob": "^2.1.1" 722 + }, 723 + "engines": { 724 + "node": ">=0.10.0" 725 + } 726 + }, 727 + "node_modules/is-path-inside": { 728 + "version": "3.0.3", 729 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 730 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 731 + "dev": true, 732 + "engines": { 733 + "node": ">=8" 734 + } 735 + }, 736 + "node_modules/isexe": { 737 + "version": "2.0.0", 738 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 739 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 740 + "dev": true 741 + }, 742 + "node_modules/js-sdsl": { 743 + "version": "4.4.0", 744 + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", 745 + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", 746 + "dev": true, 747 + "funding": { 748 + "type": "opencollective", 749 + "url": "https://opencollective.com/js-sdsl" 750 + } 751 + }, 752 + "node_modules/js-yaml": { 753 + "version": "4.1.0", 754 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 755 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 756 + "dev": true, 757 + "dependencies": { 758 + "argparse": "^2.0.1" 759 + }, 760 + "bin": { 761 + "js-yaml": "bin/js-yaml.js" 762 + } 763 + }, 764 + "node_modules/json-schema-traverse": { 765 + "version": "0.4.1", 766 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 767 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 768 + "dev": true 769 + }, 770 + "node_modules/json-stable-stringify-without-jsonify": { 771 + "version": "1.0.1", 772 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 773 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 774 + "dev": true 775 + }, 776 + "node_modules/levn": { 777 + "version": "0.4.1", 778 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 779 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 780 + "dev": true, 781 + "dependencies": { 782 + "prelude-ls": "^1.2.1", 783 + "type-check": "~0.4.0" 784 + }, 785 + "engines": { 786 + "node": ">= 0.8.0" 787 + } 788 + }, 789 + "node_modules/locate-path": { 790 + "version": "6.0.0", 791 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 792 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 793 + "dev": true, 794 + "dependencies": { 795 + "p-locate": "^5.0.0" 796 + }, 797 + "engines": { 798 + "node": ">=10" 799 + }, 800 + "funding": { 801 + "url": "https://github.com/sponsors/sindresorhus" 802 + } 803 + }, 804 + "node_modules/lodash.merge": { 805 + "version": "4.6.2", 806 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 807 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 808 + "dev": true 809 + }, 810 + "node_modules/minimatch": { 811 + "version": "3.1.2", 812 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 813 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 814 + "dev": true, 815 + "dependencies": { 816 + "brace-expansion": "^1.1.7" 817 + }, 818 + "engines": { 819 + "node": "*" 820 + } 821 + }, 822 + "node_modules/ms": { 823 + "version": "2.1.2", 824 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 825 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 826 + "dev": true 827 + }, 828 + "node_modules/natural-compare": { 829 + "version": "1.4.0", 830 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 831 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 832 + "dev": true 833 + }, 834 + "node_modules/once": { 835 + "version": "1.4.0", 836 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 837 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 838 + "dev": true, 839 + "dependencies": { 840 + "wrappy": "1" 841 + } 842 + }, 843 + "node_modules/optionator": { 844 + "version": "0.9.1", 845 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 846 + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 847 + "dev": true, 848 + "dependencies": { 849 + "deep-is": "^0.1.3", 850 + "fast-levenshtein": "^2.0.6", 851 + "levn": "^0.4.1", 852 + "prelude-ls": "^1.2.1", 853 + "type-check": "^0.4.0", 854 + "word-wrap": "^1.2.3" 855 + }, 856 + "engines": { 857 + "node": ">= 0.8.0" 858 + } 859 + }, 860 + "node_modules/p-limit": { 861 + "version": "3.1.0", 862 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 863 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 864 + "dev": true, 865 + "dependencies": { 866 + "yocto-queue": "^0.1.0" 867 + }, 868 + "engines": { 869 + "node": ">=10" 870 + }, 871 + "funding": { 872 + "url": "https://github.com/sponsors/sindresorhus" 873 + } 874 + }, 875 + "node_modules/p-locate": { 876 + "version": "5.0.0", 877 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 878 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 879 + "dev": true, 880 + "dependencies": { 881 + "p-limit": "^3.0.2" 882 + }, 883 + "engines": { 884 + "node": ">=10" 885 + }, 886 + "funding": { 887 + "url": "https://github.com/sponsors/sindresorhus" 888 + } 889 + }, 890 + "node_modules/parent-module": { 891 + "version": "1.0.1", 892 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 893 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 894 + "dev": true, 895 + "dependencies": { 896 + "callsites": "^3.0.0" 897 + }, 898 + "engines": { 899 + "node": ">=6" 900 + } 901 + }, 902 + "node_modules/path-exists": { 903 + "version": "4.0.0", 904 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 905 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 906 + "dev": true, 907 + "engines": { 908 + "node": ">=8" 909 + } 910 + }, 911 + "node_modules/path-is-absolute": { 912 + "version": "1.0.1", 913 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 914 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 915 + "dev": true, 916 + "engines": { 917 + "node": ">=0.10.0" 918 + } 919 + }, 920 + "node_modules/path-key": { 921 + "version": "3.1.1", 922 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 923 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 924 + "dev": true, 925 + "engines": { 926 + "node": ">=8" 927 + } 928 + }, 929 + "node_modules/prelude-ls": { 930 + "version": "1.2.1", 931 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 932 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 933 + "dev": true, 934 + "engines": { 935 + "node": ">= 0.8.0" 936 + } 937 + }, 938 + "node_modules/prettier": { 939 + "version": "2.8.8", 940 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", 941 + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", 942 + "dev": true, 943 + "bin": { 944 + "prettier": "bin-prettier.js" 945 + }, 946 + "engines": { 947 + "node": ">=10.13.0" 948 + }, 949 + "funding": { 950 + "url": "https://github.com/prettier/prettier?sponsor=1" 951 + } 952 + }, 953 + "node_modules/prettier-linter-helpers": { 954 + "version": "1.0.0", 955 + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 956 + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 957 + "dev": true, 958 + "dependencies": { 959 + "fast-diff": "^1.1.2" 960 + }, 961 + "engines": { 962 + "node": ">=6.0.0" 963 + } 964 + }, 965 + "node_modules/punycode": { 966 + "version": "2.3.0", 967 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 968 + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 969 + "dev": true, 970 + "engines": { 971 + "node": ">=6" 972 + } 973 + }, 974 + "node_modules/queue-microtask": { 975 + "version": "1.2.3", 976 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 977 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 978 + "dev": true, 979 + "funding": [ 980 + { 981 + "type": "github", 982 + "url": "https://github.com/sponsors/feross" 983 + }, 984 + { 985 + "type": "patreon", 986 + "url": "https://www.patreon.com/feross" 987 + }, 988 + { 989 + "type": "consulting", 990 + "url": "https://feross.org/support" 991 + } 992 + ] 993 + }, 994 + "node_modules/resolve-from": { 995 + "version": "4.0.0", 996 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 997 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 998 + "dev": true, 999 + "engines": { 1000 + "node": ">=4" 1001 + } 1002 + }, 1003 + "node_modules/reusify": { 1004 + "version": "1.0.4", 1005 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1006 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1007 + "dev": true, 1008 + "engines": { 1009 + "iojs": ">=1.0.0", 1010 + "node": ">=0.10.0" 1011 + } 1012 + }, 1013 + "node_modules/rimraf": { 1014 + "version": "3.0.2", 1015 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1016 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1017 + "dev": true, 1018 + "dependencies": { 1019 + "glob": "^7.1.3" 1020 + }, 1021 + "bin": { 1022 + "rimraf": "bin.js" 1023 + }, 1024 + "funding": { 1025 + "url": "https://github.com/sponsors/isaacs" 1026 + } 1027 + }, 1028 + "node_modules/run-parallel": { 1029 + "version": "1.2.0", 1030 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1031 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1032 + "dev": true, 1033 + "funding": [ 1034 + { 1035 + "type": "github", 1036 + "url": "https://github.com/sponsors/feross" 1037 + }, 1038 + { 1039 + "type": "patreon", 1040 + "url": "https://www.patreon.com/feross" 1041 + }, 1042 + { 1043 + "type": "consulting", 1044 + "url": "https://feross.org/support" 1045 + } 1046 + ], 1047 + "dependencies": { 1048 + "queue-microtask": "^1.2.2" 1049 + } 1050 + }, 1051 + "node_modules/shebang-command": { 1052 + "version": "2.0.0", 1053 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1054 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1055 + "dev": true, 1056 + "dependencies": { 1057 + "shebang-regex": "^3.0.0" 1058 + }, 1059 + "engines": { 1060 + "node": ">=8" 1061 + } 1062 + }, 1063 + "node_modules/shebang-regex": { 1064 + "version": "3.0.0", 1065 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1066 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1067 + "dev": true, 1068 + "engines": { 1069 + "node": ">=8" 1070 + } 1071 + }, 1072 + "node_modules/strip-ansi": { 1073 + "version": "6.0.1", 1074 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1075 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1076 + "dev": true, 1077 + "dependencies": { 1078 + "ansi-regex": "^5.0.1" 1079 + }, 1080 + "engines": { 1081 + "node": ">=8" 1082 + } 1083 + }, 1084 + "node_modules/strip-json-comments": { 1085 + "version": "3.1.1", 1086 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1087 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1088 + "dev": true, 1089 + "engines": { 1090 + "node": ">=8" 1091 + }, 1092 + "funding": { 1093 + "url": "https://github.com/sponsors/sindresorhus" 1094 + } 1095 + }, 1096 + "node_modules/supports-color": { 1097 + "version": "7.2.0", 1098 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1099 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1100 + "dev": true, 1101 + "dependencies": { 1102 + "has-flag": "^4.0.0" 1103 + }, 1104 + "engines": { 1105 + "node": ">=8" 1106 + } 1107 + }, 1108 + "node_modules/text-table": { 1109 + "version": "0.2.0", 1110 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1111 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1112 + "dev": true 1113 + }, 1114 + "node_modules/type-check": { 1115 + "version": "0.4.0", 1116 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1117 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1118 + "dev": true, 1119 + "dependencies": { 1120 + "prelude-ls": "^1.2.1" 1121 + }, 1122 + "engines": { 1123 + "node": ">= 0.8.0" 1124 + } 1125 + }, 1126 + "node_modules/type-fest": { 1127 + "version": "0.20.2", 1128 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1129 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1130 + "dev": true, 1131 + "engines": { 1132 + "node": ">=10" 1133 + }, 1134 + "funding": { 1135 + "url": "https://github.com/sponsors/sindresorhus" 1136 + } 1137 + }, 1138 + "node_modules/uri-js": { 1139 + "version": "4.4.1", 1140 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1141 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1142 + "dev": true, 1143 + "dependencies": { 1144 + "punycode": "^2.1.0" 1145 + } 1146 + }, 1147 + "node_modules/which": { 1148 + "version": "2.0.2", 1149 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1150 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1151 + "dev": true, 1152 + "dependencies": { 1153 + "isexe": "^2.0.0" 1154 + }, 1155 + "bin": { 1156 + "node-which": "bin/node-which" 1157 + }, 1158 + "engines": { 1159 + "node": ">= 8" 1160 + } 1161 + }, 1162 + "node_modules/word-wrap": { 1163 + "version": "1.2.3", 1164 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1165 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1166 + "dev": true, 1167 + "engines": { 1168 + "node": ">=0.10.0" 1169 + } 1170 + }, 1171 + "node_modules/wrappy": { 1172 + "version": "1.0.2", 1173 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1174 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1175 + "dev": true 1176 + }, 1177 + "node_modules/yocto-queue": { 1178 + "version": "0.1.0", 1179 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1180 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1181 + "dev": true, 1182 + "engines": { 1183 + "node": ">=10" 1184 + }, 1185 + "funding": { 1186 + "url": "https://github.com/sponsors/sindresorhus" 1187 + } 1188 + } 1189 + } 1190 + }
+12
package.json
··· 1 + { 2 + "devDependencies": { 3 + "eslint": "^8.39.0", 4 + "eslint-config-prettier": "^8.8.0", 5 + "eslint-plugin-prettier": "^4.2.1", 6 + "prettier": "^2.8.8" 7 + }, 8 + "scripts": { 9 + "lint": "eslint . --ext .js", 10 + "format": "prettier --write ." 11 + } 12 + }
+10 -9
privacy_consent.js
··· 1 1 // Set up cross-browser compatibility 2 - const runtime = typeof browser !== 'undefined' ? browser.runtime : chrome.runtime; 3 - const storage = typeof browser !== 'undefined' ? browser.storage.local : chrome.storage.local; 4 - const management = typeof browser !== 'undefined' ? browser.management : chrome.management; 2 + const storage = 3 + typeof browser !== "undefined" ? browser.storage.local : chrome.storage.local 4 + const management = 5 + typeof browser !== "undefined" ? browser.management : chrome.management 5 6 6 7 document.getElementById("accept").addEventListener("click", function () { 7 - storage.set({ privacyConsentAccepted: true }); 8 - window.close(); 9 - }); 8 + storage.set({ privacyConsentAccepted: true }) 9 + window.close() 10 + }) 10 11 11 - document.getElementById("decline").addEventListener("click", function () { 12 - management.uninstallSelf({ showConfirmDialog: true }); 13 - }); 12 + document.getElementById("decline").addEventListener("click", function () { 13 + management.uninstallSelf({ showConfirmDialog: true }) 14 + })