Merge pull request #51 from wanhose/v6.0.0

6.0.0
This commit is contained in:
wanhose 2022-08-04 17:00:10 +02:00 committed by GitHub
commit 3c97f8ee84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 247 additions and 221 deletions

View File

@ -9,9 +9,9 @@
},
"dependencies": {
"@fastify/cors": "^8.0.0",
"@fastify/rate-limit": "^7.1.0",
"@fastify/rate-limit": "^7.3.0",
"dotenv": "^16.0.1",
"fastify": "^4.2.1",
"fastify": "^4.3.0",
"node-fetch": "^2.6.7",
"nodemailer": "^6.7.7"
},
@ -20,9 +20,9 @@
"@types/node": "^16.11.33",
"@types/node-fetch": "^2.6.2",
"@types/nodemailer": "^6.4.4",
"@typescript-eslint/eslint-plugin": "^5.30.6",
"@typescript-eslint/parser": "^5.30.6",
"eslint": "^8.19.0",
"@typescript-eslint/eslint-plugin": "^5.32.0",
"@typescript-eslint/parser": "^5.32.0",
"eslint": "^8.21.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"nodemon": "^2.0.19",

View File

@ -8,34 +8,21 @@
## Compatibility
- Google Chrome 51+.
- Microsoft Edge 15+.
- Mozilla Firefox 54+.
- Opera 38+.
- All browsers based on Chromium 88+ (Blisk, Brave, Colibri, Epic Browser, Iron Browser, Vivaldi and many more)
- Google Chrome 88+
- Microsoft Edge 88+
- ~~Mozilla Firefox 54+~~ (development stalled until further notice, you can still download and use this extension in its **5.5.5** version)
## Installation (on Google Chrome)
## Installation (only for developers)
1. Clone this repository.
2. Go to [chrome://extensions](chrome://extensions).
3. Enable **Developer mode** by clicking the toggle switch next to **Developer Mode**.
4. Then, click the **LOAD UNPACKED** button and select the cloned folder.
5. That's all, you have a development build of this extension.
1. Clone this repository and then run `yarn install`
2. Build this repository running the command `yarn workspace browser-extension run build`
3. Go to [yourbrowser://extensions](yourbrowser://extensions) (different URL based on your browser)
4. Enable **Developer mode**
5. Then, click the **Load unpacked** button and select the generated `build` folder
6. That's all, you have a development build of this extension
## Installation (on Mozilla Firefox)
1. Clone this repository.
2. Go to [about:debugging](about:debugging).
3. Enter **This Firefox** section.
4. Then, click the **LOAD TEMPORARY ADD-ON** button and select any file inside the cloned folder.
5. That's all, you have a development build of this extension.
## Installation (on Microsoft Edge)
1. Clone this repository.
2. Go to [edge://extensions](edge://extensions).
3. Enable **Developer mode** by clicking the toggle switch next to **Developer Mode**.
4. Then, click the **LOAD UNPACKED** button and select the cloned folder.
5. That's all, you have a development build of this extension.
Please note, each time you want to see changes made in the code you will need to rebuild and refresh the extension
## Contributing

View File

@ -7,7 +7,7 @@
},
"devDependencies": {
"@types/chrome": "^0.0.193",
"eslint": "^8.19.0",
"eslint": "^8.21.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.2.1",
"minify": "^9.1.0",

View File

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"manifest_version": 3,
"name": "Cookie Dialog Monster",
"version": "5.5.7",
"version": "6.0.0",
"default_locale": "en",
"description": "__MSG_appDesc__",
"icons": {
@ -9,13 +9,13 @@
"48": "assets/icons/48.png",
"128": "assets/icons/128.png"
},
"browser_action": {
"action": {
"default_icon": "assets/icons/disabled.png",
"default_title": "Cookie Dialog Monster"
},
"author": "wanhose",
"background": {
"scripts": ["scripts/background.js"]
"service_worker": "scripts/background.js"
},
"content_scripts": [
{
@ -32,6 +32,6 @@
"run_at": "document_start"
}
],
"permissions": ["contextMenus", "http://*/*", "https://*/*", "storage", "tabs"],
"web_accessible_resources": ["assets/fonts/*", "scripts/popup.js", "styles/*"]
"host_permissions": ["http://*/*", "https://*/*"],
"permissions": ["contextMenus", "storage", "tabs"]
}

View File

@ -10,25 +10,6 @@
<body>
<header>
<h1 class="header-title">Cookie Dialog Monster</h1>
<div class="header-actions">
<button aria-label="Reload page" id="reload">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="23 4 23 10 17 10"></polyline>
<polyline points="1 20 1 14 7 14"></polyline>
<path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path>
</svg>
</button>
</div>
</header>
<main>
<label class="switch-label">

View File

@ -50,7 +50,7 @@ const report = async (tab) => {
};
/**
* @description Listens to context menus
* @description Listens to context menus clicked
*/
chrome.contextMenus.onClicked.addListener((info, tab) => {
@ -63,25 +63,6 @@ chrome.contextMenus.onClicked.addListener((info, tab) => {
}
});
/**
* @description Creates the context menu
*/
chrome.contextMenus.create({
contexts: ['all'],
documentUrlPatterns: chrome.runtime.getManifest().content_scripts[0].matches,
id: reportMenuItemId,
title: chrome.i18n.getMessage('contextMenuText'),
});
/**
* @description Listens to first start
*/
chrome.runtime.onStartup.addListener(() => {
refreshData();
});
/**
* @description Listens to messages
*/
@ -92,13 +73,13 @@ chrome.runtime.onMessage.addListener((message, sender, callback) => {
switch (message.type) {
case 'DISABLE_ICON':
if (tabId) chrome.browserAction.setIcon({ path: 'assets/icons/disabled.png', tabId });
if (tabId) chrome.action.setIcon({ path: '/assets/icons/disabled.png', tabId });
break;
case 'ENABLE_ICON':
if (tabId) chrome.browserAction.setIcon({ path: 'assets/icons/enabled.png', tabId });
if (tabId) chrome.action.setIcon({ path: '/assets/icons/enabled.png', tabId });
break;
case 'ENABLE_POPUP':
if (tabId) chrome.browserAction.setPopup({ popup: 'popup.html', tabId });
if (tabId) chrome.action.setPopup({ popup: '/popup.html', tabId });
break;
case 'GET_DATA':
chrome.storage.local.get('data', ({ data }) => {
@ -122,3 +103,24 @@ chrome.runtime.onMessage.addListener((message, sender, callback) => {
return true;
});
/**
* @description Listens to extension installed
*/
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
contexts: ['all'],
documentUrlPatterns: chrome.runtime.getManifest().content_scripts[0].matches,
id: reportMenuItemId,
title: chrome.i18n.getMessage('contextMenuText'),
});
});
/**
* @description Listens to first start
*/
chrome.runtime.onStartup.addListener(() => {
refreshData();
});

View File

@ -43,15 +43,25 @@ const preview = hostname.startsWith('consent.') || hostname.startsWith('myprivac
* @returns {boolean}
*/
const match = (node) =>
node instanceof HTMLElement &&
node.parentElement &&
!forbiddenTags.includes(node.tagName?.toUpperCase?.()) &&
node.matches(data?.elements ?? []);
const match = (node) => {
if (!(node instanceof HTMLElement)) return false;
const rect = node.getBoundingClientRect();
const isFullscreen = rect.bottom + rect.top > 0 && rect.bottom - rect.top === 0;
const isVisible = rect.top <= (window.innerHeight || document.documentElement.clientHeight);
return (
!forbiddenTags.includes(node.tagName?.toUpperCase?.()) &&
(isFullscreen || isVisible) &&
(node.offsetParent || window.getComputedStyle(node).position === 'fixed') &&
node.parentElement &&
node.matches(data?.elements ?? [])
);
};
/**
* @description Cleans DOM
* @param {HTMLElement[]} nodes
* @param {Element[]} nodes
* @param {boolean?} skipMatch
* @returns {void}
*/
@ -119,33 +129,36 @@ const observer = new MutationObserver((mutations) => {
});
/**
* @async
* @description Fixes bfcache issues
* @listens window#pageshow
*/
window.addEventListener('pageshow', (event) => {
window.addEventListener('pageshow', async (event) => {
if (event.persisted) {
dispatch({ hostname, type: 'GET_STATE' }, null, (state) => {
if (data?.elements.length && state?.enabled && !preview) {
fix();
clean(Array.from(document.querySelectorAll(data.elements)), true);
}
});
const state = await dispatch({ hostname, type: 'GET_STATE' });
if (data?.elements?.length && state?.enabled && !preview) {
const nodes = [...document.querySelectorAll(data.elements)];
fix();
if (nodes.length) clean(nodes, true);
}
}
});
/**
* @async
* @description Sets up everything
*/
dispatch({ hostname, type: 'GET_STATE' }, null, (state) => {
(async () => {
const state = await dispatch({ hostname, type: 'GET_STATE' });
dispatch({ type: 'ENABLE_POPUP' });
if (state?.enabled) {
dispatch({ hostname, type: 'GET_DATA' }, null, (result) => {
data = result;
observer.observe(document.body ?? document.documentElement, options);
dispatch({ type: 'ENABLE_ICON' });
});
data = await dispatch({ hostname, type: 'GET_DATA' });
observer.observe(document.body ?? document.documentElement, options);
dispatch({ type: 'ENABLE_ICON' });
}
});
})();

View File

@ -59,10 +59,10 @@ const isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
*/
const handlePowerChange = async () => {
dispatch({ hostname, type: 'GET_STATE' }, null, (state) => {
dispatch({ hostname, state: { enabled: !state?.enabled }, type: 'UPDATE_STATE' });
chrome.tabs.reload({ bypassCache: true });
});
const state = await dispatch({ hostname, type: 'GET_STATE' });
dispatch({ hostname, state: { enabled: !state?.enabled }, type: 'UPDATE_STATE' });
chrome.tabs.reload({ bypassCache: true });
};
/**
@ -89,37 +89,35 @@ const handleRate = (event) => {
};
/**
* @async
* @description Setup stars handlers and result message links
*/
const handleContentLoaded = () => {
dispatch({ type: 'GET_TAB' }, null, (tab) => {
hostname = tab?.url
? new URL(tab.url).hostname.split('.').slice(-3).join('.').replace('www.', '')
: undefined;
const handleContentLoaded = async () => {
const state = await dispatch({ hostname, type: 'GET_STATE' });
const tab = await dispatch({ type: 'GET_TAB' });
dispatch({ hostname, type: 'GET_STATE' }, null, (state) => {
translate();
hostname = tab?.url
? new URL(tab.url).hostname.split('.').slice(-3).join('.').replace('www.', '')
: undefined;
const host = document.getElementById('host');
const like = document.getElementById('like');
const power = document.getElementById('power');
const reload = document.getElementById('reload');
const store = document.getElementById('store');
const unlike = document.getElementById('unlike');
translate();
like.addEventListener('click', handleRate);
power.addEventListener('change', handlePowerChange);
reload.addEventListener('click', () => chrome.tabs.reload({ bypassCache: true }));
unlike.addEventListener('click', handleRate);
const host = document.getElementById('host');
const like = document.getElementById('like');
const power = document.getElementById('power');
const store = document.getElementById('store');
const unlike = document.getElementById('unlike');
host.innerText = hostname ?? 'unknown';
if (isEdge) store?.setAttribute('href', edgeUrl);
else if (isChromium) store?.setAttribute('href', chromeUrl);
else if (isFirefox) store?.setAttribute('href', firefoxUrl);
if (!state.enabled) power.removeAttribute('checked');
});
});
like.addEventListener('click', handleRate);
power.addEventListener('change', handlePowerChange);
unlike.addEventListener('click', handleRate);
host.innerText = hostname ?? 'unknown';
if (isEdge) store?.setAttribute('href', edgeUrl);
else if (isChromium) store?.setAttribute('href', chromeUrl);
else if (isFirefox) store?.setAttribute('href', firefoxUrl);
if (!state.enabled) power.removeAttribute('checked');
};
/**

View File

@ -1,39 +1,39 @@
#report-confirmation {
bottom: 30px;
bottom: 30px !important;
font-family: 'Lato', Arial, Helvetica, sans-serif !important;
min-width: 250px;
min-width: 250px !important;
position: fixed;
right: 10px;
text-align: left;
visibility: hidden;
z-index: 99999;
right: 10px !important;
text-align: left !important;
visibility: hidden !important;
z-index: 99999 !important;
}
#report-confirmation:not([hidden]) {
animation: fadeIn 0.5s, fadeOut 0.5s 3.5s;
animation: fadeIn 0.5s, fadeOut 0.5s 3.5s !important;
visibility: visible !important;
}
#report-confirmation:not([hidden]) #report-confirmation-bar {
animation: roundTime 3.5s linear forwards;
animation: roundTime 3.5s linear forwards !important;
}
#report-confirmation-content {
align-items: center;
align-items: center !important;
background-color: #34495e !important;
border-radius: 2px;
border-radius: 2px !important;
color: #fff !important;
display: flex;
display: flex !important;
font-size: 14px !important;
gap: 16px;
overflow: hidden;
padding: 16px;
gap: 16px !important;
overflow: hidden !important;
padding: 16px !important;
}
#report-confirmation-bar {
background-color: #3dd9eb !important;
height: 4px;
transform-origin: left center;
height: 4px !important;
transform-origin: left center !important;
}
@keyframes fadeIn {

View File

@ -9,7 +9,7 @@
"minify": "^9.1.0",
"rimraf": "^3.0.2",
"serve": "^14.0.1",
"tailwindcss": "^3.1.6"
"tailwindcss": "^3.1.7"
},
"engines": {
"node": "16.x"

199
yarn.lock
View File

@ -284,14 +284,14 @@ __metadata:
languageName: node
linkType: hard
"@fastify/rate-limit@npm:^7.1.0":
version: 7.1.0
resolution: "@fastify/rate-limit@npm:7.1.0"
"@fastify/rate-limit@npm:^7.3.0":
version: 7.3.0
resolution: "@fastify/rate-limit@npm:7.3.0"
dependencies:
fastify-plugin: ^4.0.0
ms: ^2.1.3
tiny-lru: ^8.0.1
checksum: c754cefa0e4bdbc45cb833c25d306223ddebe881d0f4c7f16fe544173669d95ab46c36b48c687c15392aa56182941513e25594b63805c1c99a1d52cf803ddd85
checksum: 7b32d90f5436d917561b72861d8cb63093a048c7201dcd3b85ccedef0e3f270822c9b31411253a99ee9ea1287b62f23bcdce42b0676a57f10a91045033c64114
languageName: node
linkType: hard
@ -302,14 +302,21 @@ __metadata:
languageName: node
linkType: hard
"@humanwhocodes/config-array@npm:^0.9.2":
version: 0.9.5
resolution: "@humanwhocodes/config-array@npm:0.9.5"
"@humanwhocodes/config-array@npm:^0.10.4":
version: 0.10.4
resolution: "@humanwhocodes/config-array@npm:0.10.4"
dependencies:
"@humanwhocodes/object-schema": ^1.2.1
debug: ^4.1.1
minimatch: ^3.0.4
checksum: 8ba6281bc0590f6c6eadeefc14244b5a3e3f5903445aadd1a32099ed80e753037674026ce1b3c945ab93561bea5eb29e3c5bff67060e230c295595ba517a3492
checksum: d480e5d57e6d787565b6cff78e27c3d1b380692d4ffb0ada7d7f5957a56c9032f034da05a3e443065dbd0671ebf4d859036ced34e96b325bbc1badbae3c05300
languageName: node
linkType: hard
"@humanwhocodes/gitignore-to-minimatch@npm:^1.0.2":
version: 1.0.2
resolution: "@humanwhocodes/gitignore-to-minimatch@npm:1.0.2"
checksum: aba5c40c9e3770ed73a558b0bfb53323842abfc2ce58c91d7e8b1073995598e6374456d38767be24ab6176915f0a8d8b23eaae5c85e2b488c0dccca6d795e2ad
languageName: node
linkType: hard
@ -527,13 +534,13 @@ __metadata:
languageName: node
linkType: hard
"@typescript-eslint/eslint-plugin@npm:^5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/eslint-plugin@npm:5.30.6"
"@typescript-eslint/eslint-plugin@npm:^5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/eslint-plugin@npm:5.32.0"
dependencies:
"@typescript-eslint/scope-manager": 5.30.6
"@typescript-eslint/type-utils": 5.30.6
"@typescript-eslint/utils": 5.30.6
"@typescript-eslint/scope-manager": 5.32.0
"@typescript-eslint/type-utils": 5.32.0
"@typescript-eslint/utils": 5.32.0
debug: ^4.3.4
functional-red-black-tree: ^1.0.1
ignore: ^5.2.0
@ -546,42 +553,42 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: ee020a171c057a99061ca70583473df1beb0df3229b4c9404b85d4a6ce96b03708935e2aa4418d74a877337d407ca30cdf53c9cf2f7b9eec0d79288d245267d1
checksum: 9785c34d9742b51130237bfe244924ca6dfd529bdcc5932a5cf81558f0235099c963a11125df393037db51ce451f7ab9442aba3c3a8bb2e0607569a0e31480c8
languageName: node
linkType: hard
"@typescript-eslint/parser@npm:^5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/parser@npm:5.30.6"
"@typescript-eslint/parser@npm:^5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/parser@npm:5.32.0"
dependencies:
"@typescript-eslint/scope-manager": 5.30.6
"@typescript-eslint/types": 5.30.6
"@typescript-eslint/typescript-estree": 5.30.6
"@typescript-eslint/scope-manager": 5.32.0
"@typescript-eslint/types": 5.32.0
"@typescript-eslint/typescript-estree": 5.32.0
debug: ^4.3.4
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
typescript:
optional: true
checksum: 3e02bb447d21af65adefbaddb46380ced3fb88045ef2e122d6522cc354d414898cd2222b4ce05fa0ee1fbc8c01e9a7833fe57e52b844e3fba30c89d20e006b56
checksum: 3fcfa183cad125c3198fd63701c6e13dad1cc984d309e8cd40ec9a2eb857902abfd7e9ee3f030b18eb1c18c795a61ea289ef147a7f9dfac38df905e7514316af
languageName: node
linkType: hard
"@typescript-eslint/scope-manager@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/scope-manager@npm:5.30.6"
"@typescript-eslint/scope-manager@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/scope-manager@npm:5.32.0"
dependencies:
"@typescript-eslint/types": 5.30.6
"@typescript-eslint/visitor-keys": 5.30.6
checksum: 454c32339869694a400c6e3e4e44729da3c02359cb086c1e9315e2aeb93af3a6e1c87d274f9eb0066a081f99e4ffda3a036565d17c78dd8649d19f18199419c6
"@typescript-eslint/types": 5.32.0
"@typescript-eslint/visitor-keys": 5.32.0
checksum: 69bdeb029f39d1112299dc0cb0ddef30e51bdb782fdb79cc4e72fa448e00d71e39938d3bff3fa4ee43b3416c2e3b4564de2c37252914772b07eeedafb14412d6
languageName: node
linkType: hard
"@typescript-eslint/type-utils@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/type-utils@npm:5.30.6"
"@typescript-eslint/type-utils@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/type-utils@npm:5.32.0"
dependencies:
"@typescript-eslint/utils": 5.30.6
"@typescript-eslint/utils": 5.32.0
debug: ^4.3.4
tsutils: ^3.21.0
peerDependencies:
@ -589,23 +596,23 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 19b9479961c07e66230d73f9a396e5352bcdf6fa3f5fc175fad86ac617783fa61a5db53c872025974c196a44452b3b10afb0dd10b661dce37d04b2b86ee25ba2
checksum: 4063808ca054789bebc6adb376d15c13e38f8ea14fa2842c38ae616d77fb77681b67a04b77887cf9ceb6f801ab3fc5eddfb6325779ab821404c62f36c56310bb
languageName: node
linkType: hard
"@typescript-eslint/types@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/types@npm:5.30.6"
checksum: 47c621dae5929d5b39b2b27c6f2ecb8daab1da22566867443873c0681322019f99e205629910bfe04e64077349aec05c84e0d4571f189619b609f4173a9d0f36
"@typescript-eslint/types@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/types@npm:5.32.0"
checksum: 6758f54d8d7763893cd7c1753f525ef1777eee8b558bf3d54fd2a2ce691ca0cf813c68a26e4db83a1deae4e4a62b247f1195e15a1f3577f1293849f9e55a232c
languageName: node
linkType: hard
"@typescript-eslint/typescript-estree@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/typescript-estree@npm:5.30.6"
"@typescript-eslint/typescript-estree@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/typescript-estree@npm:5.32.0"
dependencies:
"@typescript-eslint/types": 5.30.6
"@typescript-eslint/visitor-keys": 5.30.6
"@typescript-eslint/types": 5.32.0
"@typescript-eslint/visitor-keys": 5.32.0
debug: ^4.3.4
globby: ^11.1.0
is-glob: ^4.0.3
@ -614,33 +621,33 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 5621c03f1a6ca8866d91014cd30b53a37f9c4d664eb97bc2740294bcbf7efc0178e8699def752b86c97472e7b1b0cd9b6c0d9aa07a04decfe78bd16c21f93c4b
checksum: 6aee08be5d36603d038fb8340f324f5cb38519150c9b37c012f0c1ff2a4d8cf22fbc6835de31d069949c2b3d8ed3e729076a724ef29db4289d9fe73b97c9d310
languageName: node
linkType: hard
"@typescript-eslint/utils@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/utils@npm:5.30.6"
"@typescript-eslint/utils@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/utils@npm:5.32.0"
dependencies:
"@types/json-schema": ^7.0.9
"@typescript-eslint/scope-manager": 5.30.6
"@typescript-eslint/types": 5.30.6
"@typescript-eslint/typescript-estree": 5.30.6
"@typescript-eslint/scope-manager": 5.32.0
"@typescript-eslint/types": 5.32.0
"@typescript-eslint/typescript-estree": 5.32.0
eslint-scope: ^5.1.1
eslint-utils: ^3.0.0
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
checksum: fc6f9ccf558d658cbeaa85c63bc1853385630c9522c8ae42524b652a6b3c69689fba67a49d79ce1fae2b4ec9c45e5aa9b791ac027d205edef27984d088ed1c3a
checksum: cfd88d93508c8fb0db17d2726691e1383db390357fa0637bd8111558fbe72da5130d995294001d71b1d929d620fbce3f20a70b277a77ca21a4241b3b470dc758
languageName: node
linkType: hard
"@typescript-eslint/visitor-keys@npm:5.30.6":
version: 5.30.6
resolution: "@typescript-eslint/visitor-keys@npm:5.30.6"
"@typescript-eslint/visitor-keys@npm:5.32.0":
version: 5.32.0
resolution: "@typescript-eslint/visitor-keys@npm:5.32.0"
dependencies:
"@typescript-eslint/types": 5.30.6
"@typescript-eslint/types": 5.32.0
eslint-visitor-keys: ^3.3.0
checksum: e4ec0541d685d211274724c9f1887b6cdd03c7fc4fbdd1ea74c18311c3a5a9a2d4c676448ea714687ca13cc881ec5c73605de75fbf38f302ba8ea86d2b77897f
checksum: 1f9b756d648c2346a6e8538ffde729d3d9ce6621fded3d9f15c96aa0ebf8f511daf8232470423fb36359c2113538a4daaf3336181be78a0cfbfd297af91ce9ba
languageName: node
linkType: hard
@ -739,6 +746,15 @@ __metadata:
languageName: node
linkType: hard
"acorn@npm:^8.8.0":
version: 8.8.0
resolution: "acorn@npm:8.8.0"
bin:
acorn: bin/acorn
checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc
languageName: node
linkType: hard
"agent-base@npm:6, agent-base@npm:^6.0.2":
version: 6.0.2
resolution: "agent-base@npm:6.0.2"
@ -879,18 +895,18 @@ __metadata:
resolution: "api@workspace:packages/api"
dependencies:
"@fastify/cors": ^8.0.0
"@fastify/rate-limit": ^7.1.0
"@fastify/rate-limit": ^7.3.0
"@tsconfig/node16": ^1.0.3
"@types/node": ^16.11.33
"@types/node-fetch": ^2.6.2
"@types/nodemailer": ^6.4.4
"@typescript-eslint/eslint-plugin": ^5.30.6
"@typescript-eslint/parser": ^5.30.6
"@typescript-eslint/eslint-plugin": ^5.32.0
"@typescript-eslint/parser": ^5.32.0
dotenv: ^16.0.1
eslint: ^8.19.0
eslint: ^8.21.0
eslint-config-prettier: ^8.5.0
eslint-plugin-prettier: ^4.2.1
fastify: ^4.2.1
fastify: ^4.3.0
node-fetch: ^2.6.7
nodemailer: ^6.7.7
nodemon: ^2.0.19
@ -1070,7 +1086,7 @@ __metadata:
resolution: "browser-extension@workspace:packages/browser-extension"
dependencies:
"@types/chrome": ^0.0.193
eslint: ^8.19.0
eslint: ^8.21.0
eslint-config-prettier: ^8.3.0
eslint-plugin-prettier: ^4.2.1
minify: ^9.1.0
@ -1917,12 +1933,13 @@ __metadata:
languageName: node
linkType: hard
"eslint@npm:^8.19.0":
version: 8.19.0
resolution: "eslint@npm:8.19.0"
"eslint@npm:^8.21.0":
version: 8.21.0
resolution: "eslint@npm:8.21.0"
dependencies:
"@eslint/eslintrc": ^1.3.0
"@humanwhocodes/config-array": ^0.9.2
"@humanwhocodes/config-array": ^0.10.4
"@humanwhocodes/gitignore-to-minimatch": ^1.0.2
ajv: ^6.10.0
chalk: ^4.0.0
cross-spawn: ^7.0.2
@ -1932,14 +1949,17 @@ __metadata:
eslint-scope: ^7.1.1
eslint-utils: ^3.0.0
eslint-visitor-keys: ^3.3.0
espree: ^9.3.2
espree: ^9.3.3
esquery: ^1.4.0
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
file-entry-cache: ^6.0.1
find-up: ^5.0.0
functional-red-black-tree: ^1.0.1
glob-parent: ^6.0.1
globals: ^13.15.0
globby: ^11.1.0
grapheme-splitter: ^1.0.4
ignore: ^5.2.0
import-fresh: ^3.0.0
imurmurhash: ^0.1.4
@ -1958,7 +1978,7 @@ __metadata:
v8-compile-cache: ^2.0.3
bin:
eslint: bin/eslint.js
checksum: 0bc9df1a3a09dcd5a781ec728f280aa8af3ab19c2d1f14e2668b5ee5b8b1fb0e72dde5c3acf738e7f4281685fb24ec149b6154255470b06cf41de76350bca7a4
checksum: 1d39ddb08772ea230cb7d74f7f81f85b9d46965d3600725c7eb39a27bcdaf28cb2a780dacf6cfa1cfbf2da606b57a5e7e3ab373ab474cbcf0ba042076821f501
languageName: node
linkType: hard
@ -1973,6 +1993,17 @@ __metadata:
languageName: node
linkType: hard
"espree@npm:^9.3.3":
version: 9.3.3
resolution: "espree@npm:9.3.3"
dependencies:
acorn: ^8.8.0
acorn-jsx: ^5.3.2
eslint-visitor-keys: ^3.3.0
checksum: 33e8a36fc15d082e68672e322e22a53856b564d60aad8f291a667bfc21b2c900c42412d37dd3c7a0f18b9d0d8f8858dabe8776dbd4b4c2f72c5cf4d6afeabf65
languageName: node
linkType: hard
"esquery@npm:^1.4.0":
version: 1.4.0
resolution: "esquery@npm:1.4.0"
@ -2137,9 +2168,9 @@ __metadata:
languageName: node
linkType: hard
"fastify@npm:^4.2.1":
version: 4.2.1
resolution: "fastify@npm:4.2.1"
"fastify@npm:^4.3.0":
version: 4.3.0
resolution: "fastify@npm:4.3.0"
dependencies:
"@fastify/ajv-compiler": ^3.1.1
"@fastify/error": ^3.0.0
@ -2155,7 +2186,7 @@ __metadata:
secure-json-parse: ^2.4.0
semver: ^7.3.7
tiny-lru: ^8.0.2
checksum: 443c634d1a65016649f2ee782c057b8e7f02dcaab45ef5b3c1a22663a2c88ecb361f301f1cc92c3ad27c0a1c434c53d9ae051ce4474bee55abcd73ebf6c7af2d
checksum: a70abb6552601aecd3315713b86a0bc790bb6d02bc000d75dc83464e20e01cdb09db7a46720072615b2c6e7796ff32f18a4777ab5b8ccb17d1dca7376df94bb4
languageName: node
linkType: hard
@ -2450,6 +2481,13 @@ __metadata:
languageName: node
linkType: hard
"grapheme-splitter@npm:^1.0.4":
version: 1.0.4
resolution: "grapheme-splitter@npm:1.0.4"
checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620
languageName: node
linkType: hard
"hard-rejection@npm:^2.1.0":
version: 2.1.0
resolution: "hard-rejection@npm:2.1.0"
@ -2928,6 +2966,13 @@ __metadata:
languageName: node
linkType: hard
"lilconfig@npm:^2.0.6":
version: 2.0.6
resolution: "lilconfig@npm:2.0.6"
checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d
languageName: node
linkType: hard
"lines-and-columns@npm:^1.1.6":
version: 1.2.4
resolution: "lines-and-columns@npm:1.2.4"
@ -4816,9 +4861,9 @@ __metadata:
languageName: node
linkType: hard
"tailwindcss@npm:^3.1.6":
version: 3.1.6
resolution: "tailwindcss@npm:3.1.6"
"tailwindcss@npm:^3.1.7":
version: 3.1.7
resolution: "tailwindcss@npm:3.1.7"
dependencies:
arg: ^5.0.2
chokidar: ^3.5.3
@ -4829,7 +4874,7 @@ __metadata:
fast-glob: ^3.2.11
glob-parent: ^6.0.2
is-glob: ^4.0.3
lilconfig: ^2.0.5
lilconfig: ^2.0.6
normalize-path: ^3.0.0
object-hash: ^3.0.0
picocolors: ^1.0.0
@ -4847,7 +4892,7 @@ __metadata:
bin:
tailwind: lib/cli.js
tailwindcss: lib/cli.js
checksum: 90719c6fd0dcdda5c8e2882ad421048c9dd90890e0c118d12ff3ec31adba53eb2df8fed1ed203e728e5b32297e1cc207df463a6b196d37344a63fde9f67c52b6
checksum: adbc9869b72f741e9a0fc281b79710863617a588fd5d897316b676f789b6482c79f46f324223300ca962afbe55bed3ec16a37a6ccf4bb2c99c53cf8c5dd9700d
languageName: node
linkType: hard
@ -5281,7 +5326,7 @@ __metadata:
minify: ^9.1.0
rimraf: ^3.0.2
serve: ^14.0.1
tailwindcss: ^3.1.6
tailwindcss: ^3.1.7
languageName: unknown
linkType: soft