From c9adf3621410dc3ba7aa66188e1f00419e45cfd6 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 13:41:51 +0100 Subject: [PATCH 01/30] #1515 Packages update, NodeJS update --- .nvmrc | 2 +- package.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.nvmrc b/.nvmrc index 805b5a4..ee09fac 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.9.0 +v20.11.1 diff --git a/package.json b/package.json index a374708..6421412 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.6.4", "description": "This is the official Browser Extension for the Open Source 2FAS project.", "engines": { - "node": "20.9.0" + "node": "20.11.1" }, "scripts": { "clean": "npx -y rimraf --glob ./public/*", @@ -76,7 +76,7 @@ "eslint-plugin-n": "^16.6.2", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-standard": "^5.0.0", - "eslint-webpack-plugin": "^4.0.1", + "eslint-webpack-plugin": "^4.1.0", "exports-loader": "^5.0.0", "file-loader": "^6.0.0", "html-loader": "^5.0.0", @@ -84,13 +84,13 @@ "mini-css-extract-plugin": "^2.8.1", "noop-loader": "^1.0.0", "path": "^0.12.7", - "postcss": "^8.4.35", + "postcss": "^8.4.36", "postcss-loader": "^8.1.1", "postcss-sass": "^0.5.0", "precss": "^4.0.0", "require-dir": "^1.2.0", "rimraf": "^5.0.1", - "sass": "^1.71.1", + "sass": "^1.72.0", "sass-loader": "^14.1.1", "source-map-loader": "^5.0.0", "stream-browserify": "^3.0.0", From 9543b0a2d8966ef3d6c74eb05df913ac957ac7b7 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 13:49:43 +0100 Subject: [PATCH 02/30] #1515 Changes for clipboard mechanism WIP --- src/background/functions/initBEAction.js | 6 +++--- src/content/content_script.js | 15 ++++++++------- src/content/events/contentOnMessage.js | 23 +++++++++-------------- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/background/functions/initBEAction.js b/src/background/functions/initBEAction.js index ee8d87f..4c1d3aa 100644 --- a/src/background/functions/initBEAction.js +++ b/src/background/functions/initBEAction.js @@ -36,9 +36,9 @@ const initBEAction = (url, tab, storageData) => { const tabData = storage[`tabData-${tab.id}`]; - if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { - return TwoFasNotification.show(config.Texts.Warning.SelectInput, tab?.id); - } + // if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { + // return TwoFasNotification.show(config.Texts.Warning.SelectInput, tab?.id); + // } if (!storage[`tabData-${tab?.id}`]?.lastAction) { condition = true; diff --git a/src/content/content_script.js b/src/content/content_script.js index 3c3c7d0..435e8a4 100644 --- a/src/content/content_script.js +++ b/src/content/content_script.js @@ -19,8 +19,9 @@ import './styles/content_script.scss'; const browser = require('webextension-polyfill'); -const { observe, createObserver } = require('./observer'); -const { getTabData, getInputs, addInputListener, portSetup, isInFrame, addFormElementsNumber, getFormElements } = require('./functions'); +// const { observe, createObserver } = require('./observer'); +// const { getTabData, getInputs, addInputListener, portSetup, isInFrame, addFormElementsNumber, getFormElements } = require('./functions'); +const { getTabData, portSetup, isInFrame } = require('./functions'); const contentOnMessage = require('./events/contentOnMessage'); const { loadFromLocalStorage, saveToLocalStorage } = require('../localStorage'); const storeLog = require('../partials/storeLog'); @@ -67,14 +68,14 @@ const contentScriptRun = async () => { storage = null; } - addInputListener(getInputs(), tabData?.id); - addFormElementsNumber(getFormElements()); + // addInputListener(getInputs(), tabData?.id); + // addFormElementsNumber(getFormElements()); - const mutationObserver = createObserver(tabData); - observe(mutationObserver); + // const mutationObserver = createObserver(tabData); + // observe(mutationObserver); window.addEventListener('beforeunload', async () => { - mutationObserver.disconnect(); + // mutationObserver.disconnect(); browser.runtime.onMessage.removeListener(onMessageListener); }, { once: true }); }; diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 48c5e99..3c3d24b 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -17,6 +17,7 @@ // along with this program. If not, see // +/* global alert */ // @TODO: remove alert const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, pageLoadComplete } = require('../functions'); @@ -37,19 +38,7 @@ const contentOnMessage = async (request, tabData) => { return storeLog('error', 17, err, 'contentOnMessage loadFromLocalStorage'); } - if (!storage || !storage[`tabData-${tabData?.id}`]) { - if (isInFrame()) { - return false; - } - - return { - status: 'notification', - title: config.Texts.Warning.SelectInput.Title, - message: config.Texts.Warning.SelectInput.Message - }; - } - - if (storage[`tabData-${tabData?.id}`].requestID !== request.token_request_id) { + if (!storage || !storage[`tabData-${tabData?.id}`] || storage[`tabData-${tabData?.id}`].requestID !== request.token_request_id) { // No matching requestID if (isInFrame()) { return false; @@ -63,7 +52,13 @@ const contentOnMessage = async (request, tabData) => { } const lastFocusedInput = storage[`tabData-${tabData?.id}`].lastFocusedInput; - const tokenInput = getTokenInput(lastFocusedInput); + let tokenInput; + + if (lastFocusedInput) { + tokenInput = getTokenInput(lastFocusedInput); + } else { + alert('clipboard'); + } if (!tokenInput) { return { status: 'elementNotFound' }; From d9a70e96c27307fd620d565b4da481c2ccba7fb9 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 15:12:29 +0100 Subject: [PATCH 03/30] #1515 Clipboard WIP --- package.json | 1 + src/content/events/contentOnMessage.js | 4 +++- src/manifest/chrome.json | 3 ++- src/manifest/edge.json | 3 ++- src/manifest/firefox.json | 1 + src/manifest/opera.json | 3 ++- src/manifest/safari.json | 1 + 7 files changed, 12 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 6421412..5543946 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ }, "dependencies": { "@babel/runtime": "^7.24.0", + "@extend-chrome/clipboard": "^2.0.0", "qrcode": "^1.5.3", "uuid": "^9.0.0" } diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 3c3d24b..652d439 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -22,6 +22,7 @@ const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, pageLoadComplete } = require('../functions'); const storeLog = require('../../partials/storeLog'); +const { clipboard } = require('@extend-chrome/clipboard'); const contentOnMessage = async (request, tabData) => { if (!request || !request.action) { @@ -57,7 +58,8 @@ const contentOnMessage = async (request, tabData) => { if (lastFocusedInput) { tokenInput = getTokenInput(lastFocusedInput); } else { - alert('clipboard'); + await clipboard.writeText(request.token); + return { status: 'clipboard' }; } if (!tokenInput) { diff --git a/src/manifest/chrome.json b/src/manifest/chrome.json index 58e1ab0..fa192a4 100644 --- a/src/manifest/chrome.json +++ b/src/manifest/chrome.json @@ -71,7 +71,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "clipboardWrite" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/edge.json b/src/manifest/edge.json index 58e1ab0..fa192a4 100644 --- a/src/manifest/edge.json +++ b/src/manifest/edge.json @@ -71,7 +71,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "clipboardWrite" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/firefox.json b/src/manifest/firefox.json index 417aea8..8cbbfda 100644 --- a/src/manifest/firefox.json +++ b/src/manifest/firefox.json @@ -77,6 +77,7 @@ "storage", "notifications", "contextMenus", + "clipboardWrite", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], diff --git a/src/manifest/opera.json b/src/manifest/opera.json index 0dfae11..212a422 100644 --- a/src/manifest/opera.json +++ b/src/manifest/opera.json @@ -70,7 +70,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "clipboardWrite" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/safari.json b/src/manifest/safari.json index fad0358..5b3d7b9 100644 --- a/src/manifest/safari.json +++ b/src/manifest/safari.json @@ -77,6 +77,7 @@ "storage", "notifications", "contextMenus", + "clipboardWrite", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], From 3e290feb416300dc5711c3435b18312d9f3576e7 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 15:52:58 +0100 Subject: [PATCH 04/30] #1515 Clipboard flow WIP --- src/_locales/en/notifications.json | 4 ++++ src/background/functions/initBEAction.js | 12 +++++++----- src/background/functions/onMessage.js | 9 +++++++++ src/config.js | 8 ++++++++ src/content/content_script.js | 9 --------- src/content/events/contentOnMessage.js | 17 ++++++++++++++--- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/src/_locales/en/notifications.json b/src/_locales/en/notifications.json index c0dcb06..735b7f5 100644 --- a/src/_locales/en/notifications.json +++ b/src/_locales/en/notifications.json @@ -39,6 +39,8 @@ "warningSelectInputMessage": "Select the text field for the 2FA token then click the extension icon or use the chosen shortcut.", "successPushSentTitle": "Push sent", "successPushSentMessage": "Please check your phone and accept your login request.", + "successPushSentClipboardTitle": "Push sent", + "successPushSentClipboardMessage": "Please check your phone and accept your login request. The token will be copied to the clipboard.", "successExtNameUpdatedTitle": "Success", "successExtNameUpdatedMessage": "Extension name updated", "successDeviceDisconnectedTitle": "Success", @@ -56,6 +58,8 @@ "infoUnsupportedProtocolMessage": "Only HTTP and HTTPS protocols are supported by 2FAS Extension", "infoBrowserActionWithoutTabTitle": "Info", "infoBrowserActionWithoutTabMessage": "Using outside the browser is not supported by 2FAS Extension", + "infoCopiedToClipboardTitle": "Successfully copied to clipboard", + "infoCopiedToClipboardMessage": "You can now paste the token into the input field", "infoTestTitle": "2FAS Notification", "infoTestMessage": "Hi! This is just a test" } \ No newline at end of file diff --git a/src/background/functions/initBEAction.js b/src/background/functions/initBEAction.js index 4c1d3aa..41fab55 100644 --- a/src/background/functions/initBEAction.js +++ b/src/background/functions/initBEAction.js @@ -36,10 +36,6 @@ const initBEAction = (url, tab, storageData) => { const tabData = storage[`tabData-${tab.id}`]; - // if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { - // return TwoFasNotification.show(config.Texts.Warning.SelectInput, tab?.id); - // } - if (!storage[`tabData-${tab?.id}`]?.lastAction) { condition = true; } else { @@ -71,7 +67,13 @@ const initBEAction = (url, tab, storageData) => { }); }) .then(channel => channel.connect()) - .then(() => TwoFasNotification.show(config.Texts.Success.PushSent, tab?.id)) + .then(() => { + if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { + return TwoFasNotification.show(config.Texts.Success.PushSentClipboard, tab?.id); + } + + return TwoFasNotification.show(config.Texts.Success.PushSent, tab?.id); + }) .catch(async err => { await storeLog('error', 5, err, tabData?.url); return TwoFasNotification.show(config.Texts.Error.UndefinedError, tab?.id); diff --git a/src/background/functions/onMessage.js b/src/background/functions/onMessage.js index 28545e4..cbaf0b6 100644 --- a/src/background/functions/onMessage.js +++ b/src/background/functions/onMessage.js @@ -21,6 +21,7 @@ const getBrowserInfo = require('./getBrowserInfo'); const generateDefaultStorage = require('./generateDefaultStorage'); const storeLog = require('../../partials/storeLog'); +const TwoFasNotification = require('../../notification'); const onMessage = (request, sender) => { return new Promise(resolve => { @@ -56,6 +57,14 @@ const onMessage = (request, sender) => { .catch(async err => await storeLog('error', 37, err, 'storageReset')); } + case 'notificationOnBackground': { + if (!request.data) { + return resolve({ status: 'No data' }); + } + + return TwoFasNotification.show(request.data, request.tabID); + } + default: { return resolve({ status: 'Empty action' }); } diff --git a/src/config.js b/src/config.js index 6e6a19d..6a4c200 100644 --- a/src/config.js +++ b/src/config.js @@ -115,6 +115,10 @@ const config = { Title: browser.i18n.getMessage('successPushSentTitle') || t.successPushSentTitle, Message: browser.i18n.getMessage('successPushSentMessage') || t.successPushSentMessage }, + PushSentClipboard: { + Title: browser.i18n.getMessage('successPushSentClipboardTitle') || t.successPushSentClipboardTitle, + Message: browser.i18n.getMessage('successPushSentClipboardMessage') || t.successPushSentClipboardMessage + }, ExtNameUpdated: { Title: browser.i18n.getMessage('successExtNameUpdatedTitle') || t.successExtNameUpdatedTitle, Message: browser.i18n.getMessage('successExtNameUpdatedMessage') || t.successExtNameUpdatedMessage @@ -150,6 +154,10 @@ const config = { Title: browser.i18n.getMessage('infoBrowserActionWithoutTabTitle') || t.infoBrowserActionWithoutTabTitle, Message: browser.i18n.getMessage('infoBrowserActionWithoutTabMessage') || t.infoBrowserActionWithoutTabMessage }, + CopiedToClipboard: { + Title: browser.i18n.getMessage('infoCopiedToClipboardTitle') || t.infoCopiedToClipboardTitle, + Message: browser.i18n.getMessage('infoCopiedToClipboardMessage') || t.infoCopiedToClipboardMessage + }, Test: { Title: browser.i18n.getMessage('infoTestTitle') || t.infoTestTitle, Message: browser.i18n.getMessage('infoTestMessage') || t.infoTestMessage diff --git a/src/content/content_script.js b/src/content/content_script.js index 435e8a4..f4b77f7 100644 --- a/src/content/content_script.js +++ b/src/content/content_script.js @@ -19,8 +19,6 @@ import './styles/content_script.scss'; const browser = require('webextension-polyfill'); -// const { observe, createObserver } = require('./observer'); -// const { getTabData, getInputs, addInputListener, portSetup, isInFrame, addFormElementsNumber, getFormElements } = require('./functions'); const { getTabData, portSetup, isInFrame } = require('./functions'); const contentOnMessage = require('./events/contentOnMessage'); const { loadFromLocalStorage, saveToLocalStorage } = require('../localStorage'); @@ -68,14 +66,7 @@ const contentScriptRun = async () => { storage = null; } - // addInputListener(getInputs(), tabData?.id); - // addFormElementsNumber(getFormElements()); - - // const mutationObserver = createObserver(tabData); - // observe(mutationObserver); - window.addEventListener('beforeunload', async () => { - // mutationObserver.disconnect(); browser.runtime.onMessage.removeListener(onMessageListener); }, { once: true }); }; diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 652d439..c1590cb 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -17,7 +17,7 @@ // along with this program. If not, see // -/* global alert */ // @TODO: remove alert +const browser = require('webextension-polyfill'); const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, pageLoadComplete } = require('../functions'); @@ -58,8 +58,19 @@ const contentOnMessage = async (request, tabData) => { if (lastFocusedInput) { tokenInput = getTokenInput(lastFocusedInput); } else { - await clipboard.writeText(request.token); - return { status: 'clipboard' }; + return clipboard.writeText(request.token) + .then(() => browser.runtime.sendMessage({ + action: 'notificationOnBackground', + data: config.Texts.Info.CopiedToClipboard, + tabID: tabData?.id + })) + .then(() => { + return { status: 'clipboard' }; + }) + .catch(err => { + console.error(err); + // @TODO: catch err + }); } if (!tokenInput) { From 13864fa564dcd66d9bc81466a5423fc941a671ff Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 18:30:51 +0100 Subject: [PATCH 05/30] #1515 Clipboard flow WIP --- src/content/events/contentOnMessage.js | 1 - src/content/functions/inputFocus.js | 2 + src/content/observer/createObserver.js | 65 --------- src/content/observer/index.js | 21 --- src/content/observer/observe.js | 33 ----- .../observer/observerConstants/index.js | 23 --- .../notObservedAttributes.js | 132 ------------------ .../observerConstants/notObservedNodes.js | 105 -------------- .../observerConstants/significantInputs.js | 25 ---- .../observerConstants/significantNodes.js | 25 ---- .../observer/observerFunctions/addedNodes.js | 101 -------------- .../findSignificantChanges.js | 26 ---- .../observerFunctions/getChildNodes.js | 29 ---- .../observer/observerFunctions/hiddenNodes.js | 101 -------------- .../observer/observerFunctions/index.js | 23 --- .../observerFunctions/removedNodes.js | 113 --------------- 16 files changed, 2 insertions(+), 823 deletions(-) delete mode 100644 src/content/observer/createObserver.js delete mode 100644 src/content/observer/index.js delete mode 100644 src/content/observer/observe.js delete mode 100644 src/content/observer/observerConstants/index.js delete mode 100644 src/content/observer/observerConstants/notObservedAttributes.js delete mode 100644 src/content/observer/observerConstants/notObservedNodes.js delete mode 100644 src/content/observer/observerConstants/significantInputs.js delete mode 100644 src/content/observer/observerConstants/significantNodes.js delete mode 100644 src/content/observer/observerFunctions/addedNodes.js delete mode 100644 src/content/observer/observerFunctions/findSignificantChanges.js delete mode 100644 src/content/observer/observerFunctions/getChildNodes.js delete mode 100644 src/content/observer/observerFunctions/hiddenNodes.js delete mode 100644 src/content/observer/observerFunctions/index.js delete mode 100644 src/content/observer/observerFunctions/removedNodes.js diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index c1590cb..7db3db6 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -40,7 +40,6 @@ const contentOnMessage = async (request, tabData) => { } if (!storage || !storage[`tabData-${tabData?.id}`] || storage[`tabData-${tabData?.id}`].requestID !== request.token_request_id) { - // No matching requestID if (isInFrame()) { return false; } diff --git a/src/content/functions/inputFocus.js b/src/content/functions/inputFocus.js index dea44f2..5683d95 100644 --- a/src/content/functions/inputFocus.js +++ b/src/content/functions/inputFocus.js @@ -27,6 +27,8 @@ const inputFocus = async (event, tabID) => { return false; } + console.log('inputFocus', event, tabID); + let storage; const el = event.target; diff --git a/src/content/observer/createObserver.js b/src/content/observer/createObserver.js deleted file mode 100644 index 25bb907..0000000 --- a/src/content/observer/createObserver.js +++ /dev/null @@ -1,65 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -/* global MutationObserver, HTMLElement */ -const addedNodes = require('./observerFunctions/addedNodes'); -const hiddenNodes = require('./observerFunctions/hiddenNodes'); -const removedNodes = require('./observerFunctions/removedNodes'); -const notObservedNodes = require('./observerConstants/notObservedNodes'); -const notObservedAttributes = require('./observerConstants/notObservedAttributes'); - -const createObserver = tabData => { - return new MutationObserver(mutations => { - if (!mutations) { - return false; - } - - mutations.forEach(async mutation => { - const mutationNodeName = mutation.target.nodeName.toLowerCase(); - - if ( - !mutation || - !(mutation?.target instanceof HTMLElement) || - mutation?.target?.classList?.contains('twofas-be-notification') || - notObservedAttributes.includes(mutation?.attributeName) || - notObservedNodes.includes(mutationNodeName) - ) { - return false; - } - - if ( - (mutation?.addedNodes && Array.from(mutation?.addedNodes).length > 0) || - (mutation?.attributeName === 'disabled' && !mutation?.target?.disabled) || - (mutation?.attributeName === 'style' && mutation?.target) - ) { - addedNodes(mutation, tabData); - } - - if (mutation?.type === 'attributes' && mutation?.target) { - hiddenNodes(mutation, tabData); - } - - if (mutation?.removedNodes && Array.from(mutation?.removedNodes).length > 0) { - removedNodes(mutation, tabData); - } - }); - }); -}; - -module.exports = createObserver; diff --git a/src/content/observer/index.js b/src/content/observer/index.js deleted file mode 100644 index 0f04d45..0000000 --- a/src/content/observer/index.js +++ /dev/null @@ -1,21 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -exports.createObserver = require('./createObserver'); -exports.observe = require('./observe'); diff --git a/src/content/observer/observe.js b/src/content/observer/observe.js deleted file mode 100644 index a0b7a6c..0000000 --- a/src/content/observer/observe.js +++ /dev/null @@ -1,33 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const observe = mutationObserver => { - const el = document?.body || document; - - return mutationObserver.observe(el, { - attributes: true, - characterData: false, - childList: true, - subtree: true, - attributeOldValue: false, - characterDataOldValue: false - }); -}; - -module.exports = observe; diff --git a/src/content/observer/observerConstants/index.js b/src/content/observer/observerConstants/index.js deleted file mode 100644 index 925cd9e..0000000 --- a/src/content/observer/observerConstants/index.js +++ /dev/null @@ -1,23 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -exports.notObservedAttributes = require('./notObservedAttributes'); -exports.notObservedNodes = require('./notObservedNodes'); -exports.significantNodes = require('./significantNodes'); -exports.significantInputs = require('./significantInputs'); diff --git a/src/content/observer/observerConstants/notObservedAttributes.js b/src/content/observer/observerConstants/notObservedAttributes.js deleted file mode 100644 index a3b3cf1..0000000 --- a/src/content/observer/observerConstants/notObservedAttributes.js +++ /dev/null @@ -1,132 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const notObservedAttributes = [ - // 2FAS - 'data-twofas-element-number', - 'data-twofas-input-listener', - // CUSTOM - 'data-ng-animate', - 'data-submitting', - // GLOBAL ATTRIBUTES - 'href', - 'acceskey', - 'autocapitalize', - 'contenteditable', - 'dir', - 'draggable', - 'enterkeyhint', - 'exportsparts', - 'inert', - 'inputmode', - 'is', - 'itemid', - 'itemprop', - 'itemref', - 'itemscope', - 'itemtype', - 'lang', - 'nonce', - 'part', - 'popover', - 'slot', - 'spellcheck', - 'tabindex', - 'title', - 'translate', - 'virtualkeyboardpolicy', - 'role', - 'accept', - 'autocomplete', - 'autocorrect', - 'capture', - 'crossorigin', - 'dirname', - 'elementtiming', - 'for', - 'max', - 'maxlength', - 'min', - 'minlength', - 'multiple', - 'pattern', - 'placeholder', - 'readonly', - 'rel', - 'required', - 'size', - 'step', - // ARIA - 'aria-activedescendant', - 'aria-atomic', - 'aria-autocomplete', - 'aria-braillelabel', - 'aria-brailleroledescription', - 'aria-busy', - 'aria-checked', - 'aria-colcount', - 'aria-colindex', - 'aria-colindextext', - 'aria-colspan', - 'aria-controls', - 'aria-current', - 'aria-describedby', - 'aria-description', - 'aria-details', - 'aria-disabled', - 'aria-dropeffect', - 'aria-errormessage', - 'aria-expanded', - 'aria-flowto', - 'aria-grabbed', - 'aria-haspopup', - 'aria-hidden', - 'aria-invalid', - 'aria-keyshortcuts', - 'aria-label', - 'aria-labelledby', - 'aria-level', - 'aria-live', - 'aria-modal', - 'aria-multiline', - 'aria-multiselectable', - 'aria-orientation', - 'aria-owns', - 'aria-placeholder', - 'aria-posinset', - 'aria-pressed', - 'aria-readonly', - 'aria-relevant', - 'aria-required', - 'aria-roledescription', - 'aria-rowcount', - 'aria-rowindex', - 'aria-rowindextext', - 'aria-rowspan', - 'aria-selected', - 'aria-setsize', - 'aria-sort', - 'aria-valuemax', - 'aria-valuemin', - 'aria-valuenow', - 'aria-valuetext', - 'value' -]; - -module.exports = notObservedAttributes; diff --git a/src/content/observer/observerConstants/notObservedNodes.js b/src/content/observer/observerConstants/notObservedNodes.js deleted file mode 100644 index 27bb47b..0000000 --- a/src/content/observer/observerConstants/notObservedNodes.js +++ /dev/null @@ -1,105 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const notObservedNodes = [ - 'a', - 'g', - 'path', - 'html', - 'body', - 'head', - 'link', - 'style', - 'script', - 'noscript', - 'title', - '#cdata-section', - '#comment', - '#text', - 'abbr', - 'address', - 'area', - 'audio', - 'b', - 'base', - 'bdi', - 'bdo', - 'blockquote', - 'br', - 'button', - 'canvas', - 'caption', - 'cite', - 'code', - 'data', - 'dd', - 'del', - 'details', - 'dfn', - 'dialog', - 'dl', - 'dt', - 'em', - 'embed', - 'figure', - 'hr', - 'i', - 'img', - 'ins', - 'label', - 'legend', - 'map', - 'mark', - 'meta', - 'meter', - 'object', - 'optgroup', - 'option', - 'output', - 'param', - 'picture', - 'pre', - 'progress', - 'q', - 'rp', - 'rt', - 'ruby', - 's', - 'samp', - 'search', - 'select', - 'small', - 'source', - 'strong', - 'sub', - 'sup', - 'svg', - 'summary', - 'template', - 'time', - 'track', - 'u', - 'var', - 'video', - 'wbr', - // custom - 'tool-tip' -]; - -module.exports = notObservedNodes; diff --git a/src/content/observer/observerConstants/significantInputs.js b/src/content/observer/observerConstants/significantInputs.js deleted file mode 100644 index a442143..0000000 --- a/src/content/observer/observerConstants/significantInputs.js +++ /dev/null @@ -1,25 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const significantInputs = [ - 'input', - 'textarea' -]; - -module.exports = significantInputs; diff --git a/src/content/observer/observerConstants/significantNodes.js b/src/content/observer/observerConstants/significantNodes.js deleted file mode 100644 index 752255f..0000000 --- a/src/content/observer/observerConstants/significantNodes.js +++ /dev/null @@ -1,25 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const significantNodes = [ - 'input', - 'textarea' -]; - -module.exports = significantNodes; diff --git a/src/content/observer/observerFunctions/addedNodes.js b/src/content/observer/observerFunctions/addedNodes.js deleted file mode 100644 index b216b9e..0000000 --- a/src/content/observer/observerFunctions/addedNodes.js +++ /dev/null @@ -1,101 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const browser = require('webextension-polyfill'); -const findSignificantChanges = require('./findSignificantChanges'); -const { getInputs, addInputListener, clearFormElementsNumber, addFormElementsNumber, getFormElements } = require('../../functions'); -const getChildNodes = require('./getChildNodes'); -const storeLog = require('../../../partials/storeLog'); -const notObservedNodes = require('../observerConstants/notObservedNodes'); -const uniqueOnly = require('../../../partials/uniqueOnly'); - -let queue = []; -let tabData = null; -let timeout; - -const process = nodes => { - if (document.readyState !== 'complete') { - timeout = window.requestAnimationFrame(() => process(nodes)); - } - - if (!nodes || nodes.length <= 0 || !tabData) { - return false; - } - - const addedNodes = - nodes - .filter(uniqueOnly) - .filter(node => !notObservedNodes.includes(node.nodeName.toLowerCase())) - .flatMap(getChildNodes) - .filter(uniqueOnly) - .filter(node => !notObservedNodes.includes(node.nodeName.toLowerCase())); - - let newInputs = false; - let inputs = []; - - for (const node in addedNodes) { - if (findSignificantChanges(addedNodes[node])) { - newInputs = true; - } - } - - if (!newInputs) { - for (const node in addedNodes) { - inputs.push(...getInputs(addedNodes[node])); - } - - inputs = inputs.filter(node => !node.hasAttribute('data-twofas-input')); - newInputs = inputs.length > 0; - } else { - inputs = getInputs(); - } - - if (newInputs) { - try { - addInputListener(inputs, tabData?.id); - clearFormElementsNumber(); - addFormElementsNumber(getFormElements()); - } catch (err) { - return storeLog('error', 15, err, tabData?.url); - } - } - - queue = []; -}; - -const addedNodes = (mutation, tabInfo) => { - if (!mutation?.target || !browser?.runtime?.id) { - return false; - } - - queue.push(mutation.target); - queue.push(...Array.from(mutation.addedNodes)); - - if (!tabData) { - tabData = tabInfo; - } - - if (timeout) { - window.cancelAnimationFrame(timeout); - } - - timeout = window.requestAnimationFrame(() => process(queue)); -}; - -module.exports = addedNodes; diff --git a/src/content/observer/observerFunctions/findSignificantChanges.js b/src/content/observer/observerFunctions/findSignificantChanges.js deleted file mode 100644 index 4a4fb73..0000000 --- a/src/content/observer/observerFunctions/findSignificantChanges.js +++ /dev/null @@ -1,26 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const significantNodes = require('../observerConstants/significantNodes'); - -const findSignificantChanges = node => { - return significantNodes.includes(node.nodeName.toLowerCase()); -}; - -module.exports = findSignificantChanges; diff --git a/src/content/observer/observerFunctions/getChildNodes.js b/src/content/observer/observerFunctions/getChildNodes.js deleted file mode 100644 index a4f0931..0000000 --- a/src/content/observer/observerFunctions/getChildNodes.js +++ /dev/null @@ -1,29 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -/* global HTMLElement */ -const getChildNodes = node => { - if (!(node instanceof HTMLElement)) { - return []; - } - - return Array.from(node.getElementsByTagName('*')); -}; - -module.exports = getChildNodes; diff --git a/src/content/observer/observerFunctions/hiddenNodes.js b/src/content/observer/observerFunctions/hiddenNodes.js deleted file mode 100644 index cc740c1..0000000 --- a/src/content/observer/observerFunctions/hiddenNodes.js +++ /dev/null @@ -1,101 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const browser = require('webextension-polyfill'); -const isVisible = require('../../functions/isVisible'); -const findSignificantChanges = require('./findSignificantChanges'); -const getChildNodes = require('./getChildNodes'); -const { loadFromLocalStorage, saveToLocalStorage } = require('../../../localStorage'); -const storeLog = require('../../../partials/storeLog'); -const { clearFormElementsNumber, addFormElementsNumber, getFormElements } = require('../../functions'); -const uniqueOnly = require('../../../partials/uniqueOnly'); - -let queue = []; -let tabData = null; -let timeout; - -const process = async nodes => { - if (document.readyState !== 'complete') { - timeout = window.requestAnimationFrame(() => process(nodes)); - } - - if (!nodes || nodes.length <= 0 || !tabData) { - return false; - } - - const hiddenNodes = - nodes - .filter(uniqueOnly) - .filter(node => findSignificantChanges(node) && node.getAttribute('data-twofas-input')) - .flatMap(getChildNodes) - .filter(uniqueOnly) - .filter(node => findSignificantChanges(node) && node.getAttribute('data-twofas-input')); - - let storage; - - clearFormElementsNumber(); - addFormElementsNumber(getFormElements()); - - try { - storage = await loadFromLocalStorage([`tabData-${tabData?.id}`]); - } catch (err) { - return storeLog('error', 41, err, tabData?.url); - } - - if (!storage[`tabData-${tabData?.id}`] || !storage[`tabData-${tabData?.id}`].lastFocusedInput) { - return false; - } - - return hiddenNodes.forEach(async node => { - const visible = await isVisible(node); - - if (node.getAttribute('data-twofas-input') === storage[`tabData-${tabData?.id}`].lastFocusedInput && !visible) { - delete storage[`tabData-${tabData?.id}`].lastFocusedInput; - - if (document?.activeElement && document?.activeElement?.getAttribute('data-twofas-input')) { - storage[`tabData-${tabData?.id}`].lastFocusedInput = document.activeElement.getAttribute('data-twofas-input'); - } - - return saveToLocalStorage({ [`tabData-${tabData?.id}`]: storage[`tabData-${tabData?.id}`] }) - .catch(err => storeLog('error', 42, err, tabData?.url)); - } - - queue = []; - }); -}; - -const hiddenNodes = (mutation, tabInfo) => { - if (!mutation?.target || !browser?.runtime?.id) { - return false; - } - - queue.push(mutation.target); - - if (!tabData) { - tabData = tabInfo; - } - - if (timeout) { - window.cancelAnimationFrame(timeout); - } - - timeout = window.requestAnimationFrame(() => process(queue)); -}; - -module.exports = hiddenNodes; diff --git a/src/content/observer/observerFunctions/index.js b/src/content/observer/observerFunctions/index.js deleted file mode 100644 index 7e4f883..0000000 --- a/src/content/observer/observerFunctions/index.js +++ /dev/null @@ -1,23 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -exports.addedNodes = require('./addedNodes'); -exports.getChildNodes = require('./getChildNodes'); -exports.hiddenNodes = require('./hiddenNodes'); -exports.removedNodes = require('./removedNodes'); diff --git a/src/content/observer/observerFunctions/removedNodes.js b/src/content/observer/observerFunctions/removedNodes.js deleted file mode 100644 index b7fe2f7..0000000 --- a/src/content/observer/observerFunctions/removedNodes.js +++ /dev/null @@ -1,113 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const browser = require('webextension-polyfill'); -const significantInputs = require('../observerConstants/significantInputs'); -const { loadFromLocalStorage, saveToLocalStorage } = require('../../../localStorage'); -const getChildNodes = require('./getChildNodes'); -const storeLog = require('../../../partials/storeLog'); -const { clearFormElementsNumber, addFormElementsNumber, getFormElements } = require('../../functions'); -const notObservedNodes = require('../observerConstants/notObservedNodes'); -const uniqueOnly = require('../../../partials/uniqueOnly'); - -let queue = []; -let tabData = null; -let timeout; - -const process = async nodes => { - if (document.readyState !== 'complete') { - timeout = window.requestAnimationFrame(() => process(nodes)); - } - - if (!nodes || nodes.length <= 0 || !tabData) { - return false; - } - - const ids = []; - let storage; - - const removedNodes = - nodes - .filter(uniqueOnly) - .filter(node => !notObservedNodes.includes(node.nodeName.toLowerCase())) - .flatMap(getChildNodes) - .filter(uniqueOnly) - .filter(node => !notObservedNodes.includes(node.nodeName.toLowerCase())); - - removedNodes.forEach(node => { - const nodeName = node.nodeName.toLowerCase(); - - if (!significantInputs.includes(nodeName)) { - return false; - } - - const twofasInput = node.getAttribute('data-twofas-input'); - - if (twofasInput) { - ids.push(twofasInput); - } - }); - - queue = []; - - if (ids.length <= 0) { - return false; - } - - clearFormElementsNumber(); - addFormElementsNumber(getFormElements()); - - try { - storage = await loadFromLocalStorage([`tabData-${tabData?.id}`]); - } catch (err) { - return storeLog('error', 39, err, tabData?.url); - } - - if (!storage[`tabData-${tabData?.id}`] || !storage[`tabData-${tabData?.id}`].lastFocusedInput) { - return false; - } - - if (ids.includes(storage[`tabData-${tabData?.id}`].lastFocusedInput)) { - delete storage[`tabData-${tabData?.id}`].lastFocusedInput; - } - - return saveToLocalStorage({ [`tabData-${tabData?.id}`]: storage[`tabData-${tabData?.id}`] }) - .catch(err => storeLog('error', 40, err, tabData?.url)); -}; - -const removedNodes = (mutation, tabInfo) => { - if (!mutation?.target || !browser?.runtime?.id) { - return false; - } - - queue.push(mutation.target); - queue.push(...Array.from(mutation.removedNodes)); - - if (!tabData) { - tabData = tabInfo; - } - - if (timeout) { - window.cancelAnimationFrame(timeout); - } - - timeout = window.requestAnimationFrame(() => process(queue)); -}; - -module.exports = removedNodes; From 9bcb9baf1c8aa470d65c73a79f96bf25e49da651 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 18:33:44 +0100 Subject: [PATCH 06/30] #1515 1.7.0 --- package.json | 2 +- src/config.js | 2 +- src/manifest/chrome.json | 2 +- src/manifest/edge.json | 2 +- src/manifest/firefox.json | 2 +- src/manifest/opera.json | 2 +- src/manifest/safari.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 5543946..4e40517 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "2fas-browser-extension", - "version": "1.6.4", + "version": "1.7.0", "description": "This is the official Browser Extension for the Open Source 2FAS project.", "engines": { "node": "20.11.1" diff --git a/src/config.js b/src/config.js index 6a4c200..1be7559 100644 --- a/src/config.js +++ b/src/config.js @@ -23,7 +23,7 @@ const t = require('./_locales/en/notifications.json'); const config = { WebSocketTimeout: 3, // in minutes ResendPushTimeout: 10, // in seconds - ExtensionVersion: '1.6.4', + ExtensionVersion: '1.7.0', Texts: { Error: { diff --git a/src/manifest/chrome.json b/src/manifest/chrome.json index fa192a4..7c4a455 100644 --- a/src/manifest/chrome.json +++ b/src/manifest/chrome.json @@ -3,7 +3,7 @@ "name": "2FAS - Two Factor Authentication", "short_name": "2FAS", "author": "Two Factor Authentication Service, Inc.", - "version": "1.6.4", + "version": "1.7.0", "description": "__MSG_appDesc__", "default_locale": "en", "icons": { diff --git a/src/manifest/edge.json b/src/manifest/edge.json index fa192a4..7c4a455 100644 --- a/src/manifest/edge.json +++ b/src/manifest/edge.json @@ -3,7 +3,7 @@ "name": "2FAS - Two Factor Authentication", "short_name": "2FAS", "author": "Two Factor Authentication Service, Inc.", - "version": "1.6.4", + "version": "1.7.0", "description": "__MSG_appDesc__", "default_locale": "en", "icons": { diff --git a/src/manifest/firefox.json b/src/manifest/firefox.json index 8cbbfda..9cd5996 100644 --- a/src/manifest/firefox.json +++ b/src/manifest/firefox.json @@ -3,7 +3,7 @@ "name": "2FAS - Two Factor Authentication", "short_name": "2FAS", "author": "Two Factor Authentication Service, Inc.", - "version": "1.6.4", + "version": "1.7.0", "applications": { "gecko": { "id": "admin@2fas.com", diff --git a/src/manifest/opera.json b/src/manifest/opera.json index 212a422..1bcc489 100644 --- a/src/manifest/opera.json +++ b/src/manifest/opera.json @@ -3,7 +3,7 @@ "name": "2FAS - Two Factor Authentication", "short_name": "2FAS", "author": "Two Factor Authentication Service, Inc.", - "version": "1.6.4", + "version": "1.7.0", "description": "__MSG_appDesc__", "default_locale": "en", "icons": { diff --git a/src/manifest/safari.json b/src/manifest/safari.json index 5b3d7b9..3a0521e 100644 --- a/src/manifest/safari.json +++ b/src/manifest/safari.json @@ -3,7 +3,7 @@ "name": "2FAS - Two Factor Authentication", "short_name": "2FAS", "author": "Two Factor Authentication Service, Inc.", - "version": "1.6.4", + "version": "1.7.0", "description": "__MSG_appDesc__", "default_locale": "en", "icons": { From 794ffcfc77b41309010fb7cd5f5e1d3fe959d046 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 18:38:25 +0100 Subject: [PATCH 07/30] #1515 Clipboard WIP --- package.json | 1 - src/content/events/contentOnMessage.js | 27 ++++++-------------------- src/content/styles/content_script.scss | 1 + src/manifest/chrome.json | 3 +-- src/manifest/edge.json | 3 +-- src/manifest/firefox.json | 1 - src/manifest/opera.json | 3 +-- src/manifest/safari.json | 1 - 8 files changed, 10 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 4e40517..d323aab 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,6 @@ }, "dependencies": { "@babel/runtime": "^7.24.0", - "@extend-chrome/clipboard": "^2.0.0", "qrcode": "^1.5.3", "uuid": "^9.0.0" } diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 7db3db6..d183fe2 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -17,12 +17,10 @@ // along with this program. If not, see // -const browser = require('webextension-polyfill'); const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, pageLoadComplete } = require('../functions'); const storeLog = require('../../partials/storeLog'); -const { clipboard } = require('@extend-chrome/clipboard'); const contentOnMessage = async (request, tabData) => { if (!request || !request.action) { @@ -56,27 +54,14 @@ const contentOnMessage = async (request, tabData) => { if (lastFocusedInput) { tokenInput = getTokenInput(lastFocusedInput); + } + + if (!lastFocusedInput || !tokenInput) { + // Show token in notification + return; // @TODO: remove } else { - return clipboard.writeText(request.token) - .then(() => browser.runtime.sendMessage({ - action: 'notificationOnBackground', - data: config.Texts.Info.CopiedToClipboard, - tabID: tabData?.id - })) - .then(() => { - return { status: 'clipboard' }; - }) - .catch(err => { - console.error(err); - // @TODO: catch err - }); + return inputToken(request, tokenInput, tabData?.url); } - - if (!tokenInput) { - return { status: 'elementNotFound' }; - } - - return inputToken(request, tokenInput, tabData?.url); } case 'pageLoadComplete': { diff --git a/src/content/styles/content_script.scss b/src/content/styles/content_script.scss index 59f75ea..95b54d0 100644 --- a/src/content/styles/content_script.scss +++ b/src/content/styles/content_script.scss @@ -33,6 +33,7 @@ top: 25px !important; user-select: none !important; z-index: 999999 !important; + z-index: infinite !important; @media all and (max-width: 400px) { padding: 10px !important; diff --git a/src/manifest/chrome.json b/src/manifest/chrome.json index 7c4a455..039eda8 100644 --- a/src/manifest/chrome.json +++ b/src/manifest/chrome.json @@ -71,8 +71,7 @@ "tabs", "storage", "notifications", - "contextMenus", - "clipboardWrite" + "contextMenus" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/edge.json b/src/manifest/edge.json index 7c4a455..039eda8 100644 --- a/src/manifest/edge.json +++ b/src/manifest/edge.json @@ -71,8 +71,7 @@ "tabs", "storage", "notifications", - "contextMenus", - "clipboardWrite" + "contextMenus" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/firefox.json b/src/manifest/firefox.json index 9cd5996..7184a57 100644 --- a/src/manifest/firefox.json +++ b/src/manifest/firefox.json @@ -77,7 +77,6 @@ "storage", "notifications", "contextMenus", - "clipboardWrite", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], diff --git a/src/manifest/opera.json b/src/manifest/opera.json index 1bcc489..6586ef2 100644 --- a/src/manifest/opera.json +++ b/src/manifest/opera.json @@ -70,8 +70,7 @@ "tabs", "storage", "notifications", - "contextMenus", - "clipboardWrite" + "contextMenus" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/safari.json b/src/manifest/safari.json index 3a0521e..8719a2f 100644 --- a/src/manifest/safari.json +++ b/src/manifest/safari.json @@ -77,7 +77,6 @@ "storage", "notifications", "contextMenus", - "clipboardWrite", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], From 37426c1dcb3a538c165890aabbc9d4db23249daa Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 18:43:19 +0100 Subject: [PATCH 08/30] #1515 Token in notification --- src/content/events/contentOnMessage.js | 10 +++++--- src/content/functions/index.js | 1 - src/content/functions/pageLoadComplete.js | 30 ----------------------- 3 files changed, 6 insertions(+), 35 deletions(-) delete mode 100644 src/content/functions/pageLoadComplete.js diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index d183fe2..2d16277 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -57,15 +57,17 @@ const contentOnMessage = async (request, tabData) => { } if (!lastFocusedInput || !tokenInput) { - // Show token in notification - return; // @TODO: remove + return notification({ + title: 'Your token', + message: request.token + }); // @TODO: change to proper notification later } else { return inputToken(request, tokenInput, tabData?.url); } } case 'pageLoadComplete': { - return pageLoadComplete(tabData?.id); + return { status: 'ok' } // Possibly for future use } case 'notification': @@ -75,7 +77,7 @@ const contentOnMessage = async (request, tabData) => { if (request.action === 'notification') { return notification(request); } else if (request.action === 'notificationInfo') { - return showNotificationInfo(request); + return showNotificationInfo(); } break; diff --git a/src/content/functions/index.js b/src/content/functions/index.js index 9280f77..f899369 100644 --- a/src/content/functions/index.js +++ b/src/content/functions/index.js @@ -35,7 +35,6 @@ exports.loadFonts = require('./loadFonts'); exports.neverShowNotificationInfo = require('./neverShowNotificationInfo'); exports.notification = require('./notification'); exports.openOptionsPage = require('./openOptionsPage'); -exports.pageLoadComplete = require('./pageLoadComplete'); exports.portSetup = require('./portSetup'); exports.showNotificationInfo = require('./showNotificationInfo'); exports.updateEventListener = require('./updateEventListener'); diff --git a/src/content/functions/pageLoadComplete.js b/src/content/functions/pageLoadComplete.js deleted file mode 100644 index bc0fe18..0000000 --- a/src/content/functions/pageLoadComplete.js +++ /dev/null @@ -1,30 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const addInputListener = require('../functions/addInputListener'); -const getInputs = require('../functions/getInputs'); -const addFormElementsNumber = require('../functions/addFormElementsNumber'); -const getFormElements = require('../functions/getFormElements'); - -const pageLoadComplete = async tabID => { - addInputListener(getInputs(), tabID); - addFormElementsNumber(getFormElements()); -}; - -module.exports = pageLoadComplete; From de019a7aae2190549fba49f75fd763e125785c8d Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 18:52:08 +0100 Subject: [PATCH 09/30] #1515 Build optimization --- webpack/production/background.prod.config.js | 2 -- webpack/production/contentScript.prod.config.js | 2 -- webpack/production/installPage.prod.config.js | 2 -- webpack/production/optionsPage.prod.config.js | 2 -- 4 files changed, 8 deletions(-) diff --git a/webpack/production/background.prod.config.js b/webpack/production/background.prod.config.js index 33f7238..d0ded49 100644 --- a/webpack/production/background.prod.config.js +++ b/webpack/production/background.prod.config.js @@ -30,8 +30,6 @@ const backgroundProdConfig = { name: 'background', entry: './src/background/background.js', mode: 'production', - devtool: 'cheap-module-source-map', - target: 'web', node: false, output: { path: path.join(__dirname, '../../public/background'), diff --git a/webpack/production/contentScript.prod.config.js b/webpack/production/contentScript.prod.config.js index 2807cbf..3703684 100644 --- a/webpack/production/contentScript.prod.config.js +++ b/webpack/production/contentScript.prod.config.js @@ -34,8 +34,6 @@ const contentScriptProdConfig = { name: 'contentScriptGlobal', entry: './src/content/content_script.js', mode: 'production', - devtool: 'cheap-module-source-map', - target: 'web', node: false, output: { path: path.join(__dirname, '../../public/content'), diff --git a/webpack/production/installPage.prod.config.js b/webpack/production/installPage.prod.config.js index 1c29276..f5c11b0 100644 --- a/webpack/production/installPage.prod.config.js +++ b/webpack/production/installPage.prod.config.js @@ -39,8 +39,6 @@ const installPageProdConfig = { contentPageStyles: './src/content/styles/content_script.scss' }, mode: 'production', - devtool: 'cheap-module-source-map', - target: 'web', node: false, output: { path: path.join(__dirname, '../../public/installPage'), diff --git a/webpack/production/optionsPage.prod.config.js b/webpack/production/optionsPage.prod.config.js index d4f8c07..3a2fd29 100644 --- a/webpack/production/optionsPage.prod.config.js +++ b/webpack/production/optionsPage.prod.config.js @@ -39,8 +39,6 @@ const optionsPageProdConfig = { contentPageStyles: './src/content/styles/content_script.scss' }, mode: 'production', - devtool: 'cheap-module-source-map', - target: 'web', node: false, output: { path: path.join(__dirname, '../../public/optionsPage'), From 120f7c1770bca0775bc3fff318decb161abd6d7c Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 18 Mar 2024 22:49:42 +0100 Subject: [PATCH 10/30] #1515 Clipboard WIP --- src/background/functions/initBEAction.js | 4 ++++ src/content/events/contentOnMessage.js | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/background/functions/initBEAction.js b/src/background/functions/initBEAction.js index 41fab55..80ca24d 100644 --- a/src/background/functions/initBEAction.js +++ b/src/background/functions/initBEAction.js @@ -67,6 +67,10 @@ const initBEAction = (url, tab, storageData) => { }); }) .then(channel => channel.connect()) + .then(() => { + // @TODO: Ask content script for activeElement + // checkActiveElement + }) .then(() => { if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { return TwoFasNotification.show(config.Texts.Success.PushSentClipboard, tab?.id); diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 2d16277..0e7e0f4 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -19,7 +19,7 @@ const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); -const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, pageLoadComplete } = require('../functions'); +const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame } = require('../functions'); const storeLog = require('../../partials/storeLog'); const contentOnMessage = async (request, tabData) => { @@ -66,8 +66,14 @@ const contentOnMessage = async (request, tabData) => { } } + case 'checkActiveElement': { + // const activeElement = document.activeElement; + + return { status: 'todo' }; + } + case 'pageLoadComplete': { - return { status: 'ok' } // Possibly for future use + return { status: 'ok' }; // Possibly for future use } case 'notification': From 3e1bb7cbe533409b35fe37d22da5a7a11c884606 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 12:17:27 +0100 Subject: [PATCH 11/30] #1515 Manifest - added webNavigation --- src/manifest/chrome.json | 3 ++- src/manifest/edge.json | 3 ++- src/manifest/firefox.json | 1 + src/manifest/opera.json | 3 ++- src/manifest/safari.json | 1 + 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/manifest/chrome.json b/src/manifest/chrome.json index 039eda8..d8ae6fe 100644 --- a/src/manifest/chrome.json +++ b/src/manifest/chrome.json @@ -71,7 +71,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "webNavigation" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/edge.json b/src/manifest/edge.json index 039eda8..d8ae6fe 100644 --- a/src/manifest/edge.json +++ b/src/manifest/edge.json @@ -71,7 +71,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "webNavigation" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/firefox.json b/src/manifest/firefox.json index 7184a57..d145dbd 100644 --- a/src/manifest/firefox.json +++ b/src/manifest/firefox.json @@ -77,6 +77,7 @@ "storage", "notifications", "contextMenus", + "webNavigation", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], diff --git a/src/manifest/opera.json b/src/manifest/opera.json index 6586ef2..39835f7 100644 --- a/src/manifest/opera.json +++ b/src/manifest/opera.json @@ -70,7 +70,8 @@ "tabs", "storage", "notifications", - "contextMenus" + "contextMenus", + "webNavigation" ], "host_permissions": [ "*://*.2fas.com/*" diff --git a/src/manifest/safari.json b/src/manifest/safari.json index 8719a2f..bf835cd 100644 --- a/src/manifest/safari.json +++ b/src/manifest/safari.json @@ -77,6 +77,7 @@ "storage", "notifications", "contextMenus", + "webNavigation", "https://*.2fas.com/*", "wss://*.2fas.com/*" ], From 9f3303be794f1796c661e023be4a4bd5a4a6bbae Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 12:18:37 +0100 Subject: [PATCH 12/30] #1515 Clipboard - new activeElement mechanism --- .../functions/handleFrontElement.js | 41 ++++++++++++++ src/background/functions/index.js | 2 + src/background/functions/initBEAction.js | 15 ++---- .../functions/sendMessageToAllFrames.js | 49 +++++++++++++++++ src/content/events/contentOnMessage.js | 8 ++- src/content/functions/getActiveElement.js | 54 +++++++++++++++++++ src/content/functions/index.js | 1 + 7 files changed, 154 insertions(+), 16 deletions(-) create mode 100644 src/background/functions/handleFrontElement.js create mode 100644 src/background/functions/sendMessageToAllFrames.js create mode 100644 src/content/functions/getActiveElement.js diff --git a/src/background/functions/handleFrontElement.js b/src/background/functions/handleFrontElement.js new file mode 100644 index 0000000..8c9cf02 --- /dev/null +++ b/src/background/functions/handleFrontElement.js @@ -0,0 +1,41 @@ +// +// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) +// Copyright © 2023 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Zając. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +const config = require('../../config'); +const TwoFasNotification = require('../../notification'); +const saveToLocalStorage = require('../../localStorage/saveToLocalStorage'); + +const handleFrontElement = async (activeElements, tabId, storage) => { + let properElements = []; + + if (activeElements && activeElements.length > 0) { + properElements = activeElements.filter(el => el.id && (el.nodeName === 'input' || el.nodeName === 'textarea')); + } + + if (properElements.length > 0) { + const tabData = storage[`tabData-${tabId}`] || {}; + tabData.lastFocusedInput = properElements[0].id; + await saveToLocalStorage({ [`tabData-${tabId}`]: tabData }, storage); + return TwoFasNotification.show(config.Texts.Success.PushSent, tabId); + } + + return TwoFasNotification.show(config.Texts.Success.PushSentClipboard, tabId); +}; + +module.exports = handleFrontElement; diff --git a/src/background/functions/index.js b/src/background/functions/index.js index bcea189..dcb34ed 100644 --- a/src/background/functions/index.js +++ b/src/background/functions/index.js @@ -32,6 +32,7 @@ exports.dummyGetLocalStorage = require('./dummyGetLocalStorage'); exports.generateDefaultStorage = require('./generateDefaultStorage'); exports.getBrowserInfo = require('./getBrowserInfo'); exports.getOSName = require('./getOSName'); +exports.handleFrontElement = require('./handleFrontElement'); exports.initBEAction = require('./initBEAction'); exports.onCommand = require('./onCommand'); exports.onConnect = require('./onConnect'); @@ -41,6 +42,7 @@ exports.onMessage = require('./onMessage'); exports.onStartup = require('./onStartup'); exports.openBrowserPage = require('./openBrowserPage'); exports.openInstallPage = require('./openInstallPage'); +exports.sendMessageToAllFrames = require('./sendMessageToAllFrames'); exports.sendNotificationInfo = require('./sendNotificationInfo'); exports.setIcon = require('./setIcon'); exports.subscribeChannel = require('./subscribeChannel'); diff --git a/src/background/functions/initBEAction.js b/src/background/functions/initBEAction.js index 80ca24d..b7446e6 100644 --- a/src/background/functions/initBEAction.js +++ b/src/background/functions/initBEAction.js @@ -23,6 +23,8 @@ const subscribeChannel = require('./subscribeChannel'); const TwoFasNotification = require('../../notification'); const SDK = require('../../sdk'); const storeLog = require('../../partials/storeLog'); +const sendMessageToAllFrames = require('./sendMessageToAllFrames'); +const handleFrontElement = require('./handleFrontElement'); const initBEAction = (url, tab, storageData) => { const now = new Date().getTime(); @@ -67,17 +69,8 @@ const initBEAction = (url, tab, storageData) => { }); }) .then(channel => channel.connect()) - .then(() => { - // @TODO: Ask content script for activeElement - // checkActiveElement - }) - .then(() => { - if (!storage[`tabData-${tab?.id}`]?.lastFocusedInput) { - return TwoFasNotification.show(config.Texts.Success.PushSentClipboard, tab?.id); - } - - return TwoFasNotification.show(config.Texts.Success.PushSent, tab?.id); - }) + .then(() => sendMessageToAllFrames(tab?.id, { action: 'getActiveElement' })) + .then(elements => handleFrontElement(elements, tab?.id, storage)) .catch(async err => { await storeLog('error', 5, err, tabData?.url); return TwoFasNotification.show(config.Texts.Error.UndefinedError, tab?.id); diff --git a/src/background/functions/sendMessageToAllFrames.js b/src/background/functions/sendMessageToAllFrames.js new file mode 100644 index 0000000..9d91045 --- /dev/null +++ b/src/background/functions/sendMessageToAllFrames.js @@ -0,0 +1,49 @@ +// +// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) +// Copyright © 2023 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Zając. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +const browser = require('webextension-polyfill'); + +const sendMessageToAllFrames = async (tabId, message) => { + const frames = await browser.webNavigation.getAllFrames({ tabId }); + + return Promise.all(frames.map(frame => { + return browser.tabs.sendMessage(tabId, message, { frameId: frame.frameId }) + })).then(res => { + return res.map(frame => { + if (!frame) { + return false; + } + + switch (frame?.status) { + case 'activeElement': { + return frame; + } + + default: { + return false; + } + } + }); + }).catch(err => { + // @TODO: catch err + console.error(err); + }); +}; + +module.exports = sendMessageToAllFrames; diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 0e7e0f4..355faa8 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -19,7 +19,7 @@ const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); -const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame } = require('../functions'); +const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, getActiveElement } = require('../functions'); const storeLog = require('../../partials/storeLog'); const contentOnMessage = async (request, tabData) => { @@ -66,10 +66,8 @@ const contentOnMessage = async (request, tabData) => { } } - case 'checkActiveElement': { - // const activeElement = document.activeElement; - - return { status: 'todo' }; + case 'getActiveElement': { + return getActiveElement(); } case 'pageLoadComplete': { diff --git a/src/content/functions/getActiveElement.js b/src/content/functions/getActiveElement.js new file mode 100644 index 0000000..f28d1fc --- /dev/null +++ b/src/content/functions/getActiveElement.js @@ -0,0 +1,54 @@ +// +// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) +// Copyright © 2023 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Zając. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +const { v4: uuidv4 } = require('uuid'); +const clearFormElementsNumber = require('./clearFormElementsNumber'); +const addFormElementsNumber = require('./addFormElementsNumber'); +const getFormElements = require('./getFormElements'); + +const getActiveElement = () => { + const activeElement = document.activeElement; + let nodeName; + + if (activeElement) { + nodeName = activeElement.nodeName.toLowerCase(); + } + + if (!activeElement || (nodeName !== 'input' && nodeName !== 'textarea')) { + return { + status: 'activeElement', + nodeName, + id: null + }; + } + + const inputUUID = uuidv4(); + activeElement.setAttribute('data-twofas-input', inputUUID); + + clearFormElementsNumber(); + addFormElementsNumber(getFormElements()); + + return { + status: 'activeElement', + nodeName, + id: inputUUID + }; +}; + +module.exports = getActiveElement; diff --git a/src/content/functions/index.js b/src/content/functions/index.js index f899369..275d4b6 100644 --- a/src/content/functions/index.js +++ b/src/content/functions/index.js @@ -22,6 +22,7 @@ exports.addInputListener = require('./addInputListener'); exports.clearFormElementsNumber = require('./clearFormElementsNumber'); exports.clickSubmit = require('./clickSubmit'); exports.closeNotificationInfo = require('./closeNotificationInfo'); +exports.getActiveElement = require('./getActiveElement'); exports.getFormElements = require('./getFormElements'); exports.getFormSubmitElements = require('./getFormSubmitElements'); exports.getInputs = require('./getInputs'); From 77f270c3ca437f8bb99b4a2e52b47ec4ed27a4cc Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 14:08:57 +0100 Subject: [PATCH 13/30] #1515 tokenNotificaiton --- src/_locales/en/token.json | 6 ++ src/config.js | 6 ++ src/content/events/contentOnMessage.js | 7 +- src/content/functions/index.js | 1 + src/content/functions/tokenNotification.js | 120 +++++++++++++++++++++ src/content/styles/content_script.scss | 74 +++++++++++++ src/images/copy-icon.svg | 6 ++ 7 files changed, 215 insertions(+), 5 deletions(-) create mode 100644 src/_locales/en/token.json create mode 100644 src/content/functions/tokenNotification.js create mode 100644 src/images/copy-icon.svg diff --git a/src/_locales/en/token.json b/src/_locales/en/token.json new file mode 100644 index 0000000..69c256f --- /dev/null +++ b/src/_locales/en/token.json @@ -0,0 +1,6 @@ +{ + "tokenHeader": "Your token", + "tokenCopy": "Copy", + "tokenCopied": "Copied", + "tokenDescription": "Copy the token and paste it in the input field. The token will expire in 30 seconds." +} diff --git a/src/config.js b/src/config.js index 1be7559..3373dd0 100644 --- a/src/config.js +++ b/src/config.js @@ -162,6 +162,12 @@ const config = { Title: browser.i18n.getMessage('infoTestTitle') || t.infoTestTitle, Message: browser.i18n.getMessage('infoTestMessage') || t.infoTestMessage } + }, + Token: { + Header: browser.i18n.getMessage('tokenHeader') || t.tokenHeader, + Copy: browser.i18n.getMessage('tokenCopy') || t.tokenCopy, + Copied: browser.i18n.getMessage('tokenCopied') || t.tokenCopied, + Description: browser.i18n.getMessage('tokenDescription') || t.tokenDescription } } }; diff --git a/src/content/events/contentOnMessage.js b/src/content/events/contentOnMessage.js index 355faa8..692a005 100644 --- a/src/content/events/contentOnMessage.js +++ b/src/content/events/contentOnMessage.js @@ -19,7 +19,7 @@ const config = require('../../config'); const loadFromLocalStorage = require('../../localStorage/loadFromLocalStorage'); -const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, getActiveElement } = require('../functions'); +const { notification, inputToken, getTokenInput, showNotificationInfo, loadFonts, isInFrame, getActiveElement, tokenNotification } = require('../functions'); const storeLog = require('../../partials/storeLog'); const contentOnMessage = async (request, tabData) => { @@ -57,10 +57,7 @@ const contentOnMessage = async (request, tabData) => { } if (!lastFocusedInput || !tokenInput) { - return notification({ - title: 'Your token', - message: request.token - }); // @TODO: change to proper notification later + return tokenNotification(request.token); } else { return inputToken(request, tokenInput, tabData?.url); } diff --git a/src/content/functions/index.js b/src/content/functions/index.js index 275d4b6..97a1387 100644 --- a/src/content/functions/index.js +++ b/src/content/functions/index.js @@ -38,4 +38,5 @@ exports.notification = require('./notification'); exports.openOptionsPage = require('./openOptionsPage'); exports.portSetup = require('./portSetup'); exports.showNotificationInfo = require('./showNotificationInfo'); +exports.tokenNotification = require('./tokenNotification'); exports.updateEventListener = require('./updateEventListener'); diff --git a/src/content/functions/tokenNotification.js b/src/content/functions/tokenNotification.js new file mode 100644 index 0000000..18777d7 --- /dev/null +++ b/src/content/functions/tokenNotification.js @@ -0,0 +1,120 @@ +// +// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) +// Copyright © 2023 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Zając. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +const config = require('../../config'); +const isInFrame = require('./isInFrame'); +const { createElement, createSVGElement, createTextElement } = require('../../partials/DOMElements'); +const iconSrc = require('../../images/notification-logo.svg'); +const copySrc = require('../../images/copy-icon.svg'); +const S = require('../../selectors'); + +const tokenNotification = token => { + if (isInFrame()) { + return false; + } + + let n = { + container: document.querySelector(S.notification.container), + notification: null, + firstCol: null, + logo: null, + secondCol: null, + header: null, + h3: null, + tokenBox: null, + tokenText: null, + tokenIconContainer: null, + tokenIcon: null, + tokenButton: null, + tokenButtonText: null, + notificationText: null, + p: null + }; + + if (!n.container) { + n.container = createElement('div', 'twofas-be-notifications'); + window.top.document.body.appendChild(n.container); + } + + n.notification = createElement('div', 'twofas-be-notification'); + n.firstCol = createElement('div', 'twofas-be-col'); + n.logo = createSVGElement(iconSrc); + + n.firstCol.appendChild(n.logo); + n.notification.appendChild(n.firstCol); + + n.secondCol = createElement('div', 'twofas-be-col'); + n.header = createElement('div', 'twofas-be-notification-header'); + n.h3 = createTextElement('h3', config.Texts.Token.Header); + + n.header.appendChild(n.h3); + n.secondCol.appendChild(n.header); + + n.tokenBox = createElement('div', 'twofas-be-notification-token-box'); + n.tokenText = createTextElement('p', token, 'twofas-be-notification-token-box-text'); + n.tokenButton = createElement('button', 'twofas-be-notification-token-box-copy-button'); + n.tokenButton.addEventListener('click', () => { + navigator.clipboard.writeText(token); + n.tokenButtonText.innerText = config.Texts.Token.Copied; + + setTimeout(() => { + n.tokenButtonText.innerText = config.Texts.Token.Copy; + }, 1000); + }); + n.tokenButtonText = createTextElement('span', config.Texts.Token.Copy); + n.tokenIconContainer = createElement('div', 'twofas-be-notification-token-box-copy-icon'); + n.tokenIcon = createSVGElement(copySrc); + + n.tokenButton.appendChild(n.tokenButtonText); + n.tokenIconContainer.appendChild(n.tokenIcon); + n.tokenButton.appendChild(n.tokenIconContainer); + n.tokenBox.appendChild(n.tokenText); + n.tokenBox.appendChild(n.tokenButton); + n.secondCol.appendChild(n.tokenBox); + + n.notificationText = createElement('div', 'twofas-be-notification-text'); + n.p = createTextElement('p', config.Texts.Token.Description); + + n.notificationText.appendChild(n.p); + n.secondCol.appendChild(n.notificationText); + n.notification.appendChild(n.secondCol); + n.container.appendChild(n.notification); + + setTimeout(() => n.notification.classList.add('visible'), 300); + + window.addEventListener('beforeunload', () => { + n.notification.classList.remove('visible'); + + setTimeout(() => { + n.notification.classList.add('hidden'); + n = null; + }, 300); + }); + + setTimeout(() => { + n.notification.classList.remove('visible'); + }, 30300); + + setTimeout(() => { + n.notification.classList.add('hidden'); + n = null; + }, 30600); +}; + +module.exports = tokenNotification; diff --git a/src/content/styles/content_script.scss b/src/content/styles/content_script.scss index 95b54d0..416b92e 100644 --- a/src/content/styles/content_script.scss +++ b/src/content/styles/content_script.scss @@ -121,6 +121,80 @@ } } + &-token-box { + align-items: center !important; + display: flex !important; + flex-direction: row !important; + justify-content: space-between !important; + margin-bottom: 10px !important; + + > p { + &.twofas-be-notification-token-box-text { + color: $color !important; + font-size: 32px !important; + font-weight: 700 !important; + } + } + + > button { + &.twofas-be-notification-token-box-copy-button { + align-items: center !important; + appearance: none !important; + background-color: $theme-color !important; + border: 0 !important; + border-radius: 20px !important; + color: $color-2 !important; + cursor: pointer !important; + display: inline-flex !important; + flex-direction: row !important; + font-size: 12px !important; + font-weight: 600 !important; + height: 40px !important; + justify-content: space-between !important; + letter-spacing: .9px !important; + line-height: 40px !important; + padding: 0 5px 0 16px !important; + outline: none !important; + text-align: center !important; + text-decoration: none !important; + text-transform: uppercase !important; + transition: background-color .2s ease-in-out, color .2s ease-in-out !important; + + &:hover { + background-color: color.adjust($theme-color, $lightness: -10%) !important; + color: $color-2 !important; + } + + &:active { + background-color: color.adjust($theme-color, $lightness: -20%) !important; + color: $color-2 !important; + } + + > span { + flex-grow: 1 !important; + margin-right: 8px !important; + } + + > .twofas-be-notification-token-box-copy-icon { + align-items: center !important; + background-color: $color-2 !important; + border-radius: 50% !important; + display: flex !important; + justify-content: center !important; + height: 32px !important; + width: 32px !important; + + > svg { + height: 16px !important; + margin-right: 0 !important; + max-width: 100% !important; + width: auto !important; + } + } + } + } + } + .twofas-be-col { flex-shrink: unset !important; font-family: 'Montserrat', sans-serif !important; diff --git a/src/images/copy-icon.svg b/src/images/copy-icon.svg new file mode 100644 index 0000000..3ef835c --- /dev/null +++ b/src/images/copy-icon.svg @@ -0,0 +1,6 @@ + + + + + + From 56f559283b04192b13aaf78f939a0bd82ea20f90 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 14:14:02 +0100 Subject: [PATCH 14/30] #1515 Code refactor --- logsCodes.txt | 14 ++--- src/_locales/en/notifications.json | 2 - src/config.js | 4 -- src/content/functions/addInputListener.js | 45 -------------- src/content/functions/getInputs.js | 27 --------- src/content/functions/index.js | 5 -- src/content/functions/inputFocus.js | 63 -------------------- src/content/functions/isVisible.js | 32 ---------- src/content/functions/updateEventListener.js | 44 -------------- 9 files changed, 7 insertions(+), 229 deletions(-) delete mode 100644 src/content/functions/addInputListener.js delete mode 100644 src/content/functions/getInputs.js delete mode 100644 src/content/functions/inputFocus.js delete mode 100644 src/content/functions/isVisible.js delete mode 100644 src/content/functions/updateEventListener.js diff --git a/logsCodes.txt b/logsCodes.txt index 84e0e35..edffcf2 100644 --- a/logsCodes.txt +++ b/logsCodes.txt @@ -49,13 +49,13 @@ 16 - inputFocus 17 - contentOnMessage 18 - neverShowNotificationInfo -*19 - openOptionsPage [redundant] -39 - removedNodes - loadFromLocalStorage -40 - removedNodes - saveToLocalStorage -41 - hiddenNodes - loadFromLocalStorage -42 - hiddenNodes - saveToLocalStorage -43 - pageLoadComplete - loadFromLocalStorage -44 - pageLoadComplete - saveToLocalStorage +*19 - openOptionsPage [deprecated] +*39 - removedNodes - loadFromLocalStorage [deprecated] +*40 - removedNodes - saveToLocalStorage [deprecated] +*41 - hiddenNodes - loadFromLocalStorage [deprecated] +*42 - hiddenNodes - saveToLocalStorage [deprecated] +*43 - pageLoadComplete - loadFromLocalStorage [deprecated] +*44 - pageLoadComplete - saveToLocalStorage [deprecated] 46 - clickSubmit - loadFromLocalStorage // INSTALL PAGE diff --git a/src/_locales/en/notifications.json b/src/_locales/en/notifications.json index 735b7f5..352e534 100644 --- a/src/_locales/en/notifications.json +++ b/src/_locales/en/notifications.json @@ -35,8 +35,6 @@ "errorStorageIntegrityMessage": "Please reinstall browser extension or contact with 2FAS Support on Discord", "warningTooSoonTitle": "Wait a moment", "warningTooSoonMessage": "Please wait DIFF seconds before sending another request.", - "warningSelectInputTitle": "Select the text field first", - "warningSelectInputMessage": "Select the text field for the 2FA token then click the extension icon or use the chosen shortcut.", "successPushSentTitle": "Push sent", "successPushSentMessage": "Please check your phone and accept your login request.", "successPushSentClipboardTitle": "Push sent", diff --git a/src/config.js b/src/config.js index 3373dd0..3876244 100644 --- a/src/config.js +++ b/src/config.js @@ -104,10 +104,6 @@ const config = { Title: browser.i18n.getMessage('warningTooSoonTitle') || t.warningTooSoonTitle, Message: (browser.i18n.getMessage('warningTooSoonMessage') || t.warningTooSoonMessage).replace('DIFF', 10 - Math.round(diff)) } - }, - SelectInput: { - Title: browser.i18n.getMessage('warningSelectInputTitle') || t.warningSelectInputTitle, - Message: browser.i18n.getMessage('warningSelectInputMessage') || t.warningSelectInputMessage } }, Success: { diff --git a/src/content/functions/addInputListener.js b/src/content/functions/addInputListener.js deleted file mode 100644 index a554787..0000000 --- a/src/content/functions/addInputListener.js +++ /dev/null @@ -1,45 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const updateEventListener = require('./updateEventListener'); -const inputFocus = require('./inputFocus'); - -const addInputListener = (elements, tabID) => { - if (!Array.isArray(elements) || elements?.length <= 0) { - return false; - } - - let func = event => inputFocus(event, tabID); - - elements.map(input => { - if (input?.dataset?.twofasInputListener === 'true' && input?.dataset.twofasInput) { - if (input === document.activeElement || input.matches(':focus')) { - return func({ target: input }); - } else { - return false; - } - } - - return updateEventListener(input, func); - }); - - func = null; -}; - -module.exports = addInputListener; diff --git a/src/content/functions/getInputs.js b/src/content/functions/getInputs.js deleted file mode 100644 index bce21c1..0000000 --- a/src/content/functions/getInputs.js +++ /dev/null @@ -1,27 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const inputsSelectors = require('../../partials/inputsSelectors')(); - -const getInputs = node => { - const el = node || document; - return Array.from(el.querySelectorAll(inputsSelectors)); -}; - -module.exports = getInputs; diff --git a/src/content/functions/index.js b/src/content/functions/index.js index 97a1387..f4c6d49 100644 --- a/src/content/functions/index.js +++ b/src/content/functions/index.js @@ -18,20 +18,16 @@ // exports.addFormElementsNumber = require('./addFormElementsNumber'); -exports.addInputListener = require('./addInputListener'); exports.clearFormElementsNumber = require('./clearFormElementsNumber'); exports.clickSubmit = require('./clickSubmit'); exports.closeNotificationInfo = require('./closeNotificationInfo'); exports.getActiveElement = require('./getActiveElement'); exports.getFormElements = require('./getFormElements'); exports.getFormSubmitElements = require('./getFormSubmitElements'); -exports.getInputs = require('./getInputs'); exports.getTabData = require('./getTabData'); exports.getTokenInput = require('./getTokenInput'); -exports.inputFocus = require('./inputFocus'); exports.inputToken = require('./inputToken'); exports.isInFrame = require('./isInFrame'); -exports.isVisible = require('./isVisible'); exports.loadFonts = require('./loadFonts'); exports.neverShowNotificationInfo = require('./neverShowNotificationInfo'); exports.notification = require('./notification'); @@ -39,4 +35,3 @@ exports.openOptionsPage = require('./openOptionsPage'); exports.portSetup = require('./portSetup'); exports.showNotificationInfo = require('./showNotificationInfo'); exports.tokenNotification = require('./tokenNotification'); -exports.updateEventListener = require('./updateEventListener'); diff --git a/src/content/functions/inputFocus.js b/src/content/functions/inputFocus.js deleted file mode 100644 index 5683d95..0000000 --- a/src/content/functions/inputFocus.js +++ /dev/null @@ -1,63 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const browser = require('webextension-polyfill'); -const { loadFromLocalStorage, saveToLocalStorage } = require('../../localStorage'); -const storeLog = require('../../partials/storeLog'); -const { v4: uuidv4 } = require('uuid'); - -const inputFocus = async (event, tabID) => { - if (!browser?.runtime?.id || !event || !event?.target) { - return false; - } - - console.log('inputFocus', event, tabID); - - let storage; - const el = event.target; - - try { - storage = await loadFromLocalStorage([`tabData-${tabID}`]); - } catch (err) { - return storeLog('error', 16, err, 'inputFocus - no URL/tabID'); - } - - try { - const tabData = storage[`tabData-${tabID}`] ? storage[`tabData-${tabID}`] : {}; - - if ( - el?.dataset?.twofasInput?.length > 0 && - (typeof el?.dataset?.twofasInput === 'string' || el?.dataset?.twofasInput instanceof String) - ) { - tabData.lastFocusedInput = el.dataset.twofasInput; - } else { - if (typeof el?.setAttribute === 'function') { - const inputUUID = uuidv4(); - el.setAttribute('data-twofas-input', inputUUID); - tabData.lastFocusedInput = inputUUID; - } - } - - return saveToLocalStorage({ [`tabData-${tabID}`]: tabData }, storage); - } catch (err) { - return storeLog('error', 16, err, storage[`tabData-${tabID}`]?.url); - } -}; - -module.exports = inputFocus; diff --git a/src/content/functions/isVisible.js b/src/content/functions/isVisible.js deleted file mode 100644 index 927a3dc..0000000 --- a/src/content/functions/isVisible.js +++ /dev/null @@ -1,32 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -/* global IntersectionObserver */ -const isVisible = domElement => { - return new Promise(resolve => { - const o = new IntersectionObserver(([entry]) => { - resolve(entry.intersectionRatio === 1); - o.disconnect(); - }); - - o.observe(domElement); - }); -}; - -module.exports = isVisible; diff --git a/src/content/functions/updateEventListener.js b/src/content/functions/updateEventListener.js deleted file mode 100644 index 9f92a4e..0000000 --- a/src/content/functions/updateEventListener.js +++ /dev/null @@ -1,44 +0,0 @@ -// -// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) -// Copyright © 2023 Two Factor Authentication Service, Inc. -// Contributed by Grzegorz Zając. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see -// - -const updateEventListener = (input, func) => { - const removeListener = () => { - if (typeof input.removeEventListener === 'function') { - input.removeEventListener('focus', func); - } - }; - - removeListener(); - - if (typeof input.addEventListener === 'function') { - input.addEventListener('focus', func); - } - - if (input && input?.dataset) { - input.dataset.twofasInputListener = 'true'; - } - - if (input === document.activeElement || input.matches(':focus')) { - func({ target: input }); - } - - window.addEventListener('onbeforeunload', removeListener, { once: true }); -}; - -module.exports = updateEventListener; From eb5139671b6aa255ff08544a9648e2ee8ee0ff10 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 14:15:55 +0100 Subject: [PATCH 15/30] #1515 sendMessageToAllFrames - handle error --- src/background/functions/sendMessageToAllFrames.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/background/functions/sendMessageToAllFrames.js b/src/background/functions/sendMessageToAllFrames.js index 9d91045..f0e889e 100644 --- a/src/background/functions/sendMessageToAllFrames.js +++ b/src/background/functions/sendMessageToAllFrames.js @@ -18,6 +18,8 @@ // const browser = require('webextension-polyfill'); +const config = require('../../config'); +const TwoFasNotification = require('../notification'); const sendMessageToAllFrames = async (tabId, message) => { const frames = await browser.webNavigation.getAllFrames({ tabId }); @@ -41,8 +43,9 @@ const sendMessageToAllFrames = async (tabId, message) => { } }); }).catch(err => { - // @TODO: catch err - console.error(err); + if (err.toString().includes('Receiving end does not exist')) { + return TwoFasNotification.show(config.Texts.Error.LackOfTab, tabId); + } }); }; From cd2b76eb60efa0fad40e1725b72379d74a7aaf73 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 14:17:24 +0100 Subject: [PATCH 16/30] #1515 sendMessageToAllFrames - notification FIX --- src/background/functions/sendMessageToAllFrames.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/background/functions/sendMessageToAllFrames.js b/src/background/functions/sendMessageToAllFrames.js index f0e889e..65307a0 100644 --- a/src/background/functions/sendMessageToAllFrames.js +++ b/src/background/functions/sendMessageToAllFrames.js @@ -19,7 +19,7 @@ const browser = require('webextension-polyfill'); const config = require('../../config'); -const TwoFasNotification = require('../notification'); +const TwoFasNotification = require('../../notification'); const sendMessageToAllFrames = async (tabId, message) => { const frames = await browser.webNavigation.getAllFrames({ tabId }); From bf166575903a781e7e40b49a15a09693516a0169 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Fri, 22 Mar 2024 14:28:36 +0100 Subject: [PATCH 17/30] #1515 contentScript - notification improvement --- src/content/functions/notification.js | 21 +++++++++++++++------ src/content/functions/tokenNotification.js | 20 ++++++++++++++------ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/content/functions/notification.js b/src/content/functions/notification.js index 5422e69..64d993c 100644 --- a/src/content/functions/notification.js +++ b/src/content/functions/notification.js @@ -69,21 +69,30 @@ const notification = request => { setTimeout(() => n.notification.classList.add('visible'), 300); window.addEventListener('beforeunload', () => { - n.notification.classList.remove('visible'); + if (n && n.notification) { + n.notification.classList.remove('visible'); + } setTimeout(() => { - n.notification.classList.add('hidden'); - n = null; + if (n && n.notification) { + n.notification.classList.add('hidden'); + n = null; + } }, 300); }); if (request.timeout) { setTimeout(() => { - n.notification.classList.remove('visible'); + if (n && n.notification) { + n.notification.classList.remove('visible'); + } }, 5300); + setTimeout(() => { - n.notification.classList.add('hidden'); - n = null; + if (n && n.notification) { + n.notification.classList.add('hidden'); + n = null; + } }, 5600); } }; diff --git a/src/content/functions/tokenNotification.js b/src/content/functions/tokenNotification.js index 18777d7..4a3c4b7 100644 --- a/src/content/functions/tokenNotification.js +++ b/src/content/functions/tokenNotification.js @@ -99,21 +99,29 @@ const tokenNotification = token => { setTimeout(() => n.notification.classList.add('visible'), 300); window.addEventListener('beforeunload', () => { - n.notification.classList.remove('visible'); + if (n && n.notification) { + n.notification.classList.remove('visible'); + } setTimeout(() => { - n.notification.classList.add('hidden'); - n = null; + if (n && n.notification) { + n.notification.classList.add('hidden'); + n = null; + } }, 300); }); setTimeout(() => { - n.notification.classList.remove('visible'); + if (n && n.notification) { + n.notification.classList.remove('visible'); + } }, 30300); setTimeout(() => { - n.notification.classList.add('hidden'); - n = null; + if (n && n.notification) { + n.notification.classList.add('hidden'); + n = null; + } }, 30600); }; From ccf4df36a1467265ffc8c957d172bb24de3a4261 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 25 Mar 2024 12:22:34 +0100 Subject: [PATCH 18/30] #1515 Notifications text improvement --- src/_locales/en/notifications.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/en/notifications.json b/src/_locales/en/notifications.json index 352e534..70d01af 100644 --- a/src/_locales/en/notifications.json +++ b/src/_locales/en/notifications.json @@ -38,7 +38,7 @@ "successPushSentTitle": "Push sent", "successPushSentMessage": "Please check your phone and accept your login request.", "successPushSentClipboardTitle": "Push sent", - "successPushSentClipboardMessage": "Please check your phone and accept your login request. The token will be copied to the clipboard.", + "successPushSentClipboardMessage": "Please check your phone and accept your login request. Copy your token and paste it into the correct input on the website.", "successExtNameUpdatedTitle": "Success", "successExtNameUpdatedMessage": "Extension name updated", "successDeviceDisconnectedTitle": "Success", From d965d039ec0e27af33c92649d2be360e8abc86f9 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 25 Mar 2024 12:34:05 +0100 Subject: [PATCH 19/30] #1515 clearAfterInputToken added --- src/content/functions/clearAfterInputToken.js | 43 +++++++++++++++++++ src/content/functions/index.js | 1 + src/content/functions/inputToken.js | 3 ++ 3 files changed, 47 insertions(+) create mode 100644 src/content/functions/clearAfterInputToken.js diff --git a/src/content/functions/clearAfterInputToken.js b/src/content/functions/clearAfterInputToken.js new file mode 100644 index 0000000..2f3d8a0 --- /dev/null +++ b/src/content/functions/clearAfterInputToken.js @@ -0,0 +1,43 @@ +// +// This file is part of the 2FAS Browser Extension (https://github.com/twofas/2fas-browser-extension) +// Copyright © 2023 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Zając. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +const { loadFromLocalStorage, saveToLocalStorage } = require('../../localStorage') + +const clearAfterInputToken = (inputElement, tabID) => { + // CLEAR INPUT + if (inputElement) { + if (typeof inputElement?.removeAttribute === 'function') { + inputElement.removeAttribute('data-twofas-input'); + } + } + + // CLEAR STORAGE + return loadFromLocalStorage([`tabData-${tabID}`]) + .then(storage => { + if (storage[`tabData-${tabID}`] && storage[`tabData-${tabID}`].lastFocusedInput) { + delete storage[`tabData-${tabID}`].lastFocusedInput; + return saveToLocalStorage({ [`tabData-${tabID}`]: storage[`tabData-${tabID}`] }); + } + + return true; + }) + .catch(() => {}); +}; + +module.exports = clearAfterInputToken; diff --git a/src/content/functions/index.js b/src/content/functions/index.js index f4c6d49..9db0ac7 100644 --- a/src/content/functions/index.js +++ b/src/content/functions/index.js @@ -18,6 +18,7 @@ // exports.addFormElementsNumber = require('./addFormElementsNumber'); +exports.clearAfterInputToken = require('./clearAfterInputToken'); exports.clearFormElementsNumber = require('./clearFormElementsNumber'); exports.clickSubmit = require('./clickSubmit'); exports.closeNotificationInfo = require('./closeNotificationInfo'); diff --git a/src/content/functions/inputToken.js b/src/content/functions/inputToken.js index 0efc846..f54b349 100644 --- a/src/content/functions/inputToken.js +++ b/src/content/functions/inputToken.js @@ -21,6 +21,7 @@ const delay = require('../../partials/delay'); const getTabData = require('./getTabData'); const clickSubmit = require('./clickSubmit'); +const clearAfterInputToken = require('./clearAfterInputToken'); const inputToken = (request, inputElement, siteURL) => { return new Promise(resolve => { @@ -81,6 +82,8 @@ const inputToken = (request, inputElement, siteURL) => { clickSubmit(inputElement, siteURL); } + clearAfterInputToken(inputElement, tab.id); + return resolve({ status: 'completed', url: siteURL From 77cb3fc3c18fe468c2f11650f63b6be71103436e Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 25 Mar 2024 13:59:36 +0100 Subject: [PATCH 20/30] #1515 Loco export --- webpack/utils/export/messages.json | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/webpack/utils/export/messages.json b/webpack/utils/export/messages.json index f3bc213..830e385 100644 --- a/webpack/utils/export/messages.json +++ b/webpack/utils/export/messages.json @@ -116,10 +116,10 @@ "errorStorageIntegrityMessage": "Please reinstall browser extension or contact with 2FAS Support on Discord", "warningTooSoonTitle": "Wait a moment", "warningTooSoonMessage": "Please wait DIFF seconds before sending another request.", - "warningSelectInputTitle": "Select the text field first", - "warningSelectInputMessage": "Select the text field for the 2FA token then click the extension icon or use the chosen shortcut.", "successPushSentTitle": "Push sent", "successPushSentMessage": "Please check your phone and accept your login request.", + "successPushSentClipboardTitle": "Push sent", + "successPushSentClipboardMessage": "Please check your phone and accept your login request. Copy your token and paste it into the correct input on the website.", "successExtNameUpdatedTitle": "Success", "successExtNameUpdatedMessage": "Extension name updated", "successDeviceDisconnectedTitle": "Success", @@ -137,6 +137,8 @@ "infoUnsupportedProtocolMessage": "Only HTTP and HTTPS protocols are supported by 2FAS Extension", "infoBrowserActionWithoutTabTitle": "Info", "infoBrowserActionWithoutTabMessage": "Using outside the browser is not supported by 2FAS Extension", + "infoCopiedToClipboardTitle": "Successfully copied to clipboard", + "infoCopiedToClipboardMessage": "You can now paste the token into the input field", "infoTestTitle": "2FAS Notification", "infoTestMessage": "Hi! This is just a test", "optionsTitle": "2FAS Browser Extension | Options", @@ -181,5 +183,9 @@ "optionsDomainRequired": "Domain is required", "optionsDomainTooLong": "Domain is too long", "optionsDomainIncorrect": "Domain is not correct", - "optionsDomainExists": "Domain exists on excluded list" + "optionsDomainExists": "Domain exists on excluded list", + "tokenHeader": "Your token", + "tokenCopy": "Copy", + "tokenCopied": "Copied", + "tokenDescription": "Copy the token and paste it in the input field. The token will expire in 30 seconds." } \ No newline at end of file From 86c7bcd18329c1c98ade2ecb3cc1a22364905934 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Mon, 25 Mar 2024 14:03:19 +0100 Subject: [PATCH 21/30] #1515 OSS Licenses --- open-source-licenses.html | 50 +++++++++++++++++++++++++++++++++++++++ open-source-licenses.json | 1 + 2 files changed, 51 insertions(+) diff --git a/open-source-licenses.html b/open-source-licenses.html index d72d130..9a2b95c 100644 --- a/open-source-licenses.html +++ b/open-source-licenses.html @@ -1798,3 +1798,53 @@ th, td {
departmentrelated tonamelicense periodmaterial / not materiallicense typelinkremote versioninstalled versiondefined versionauthor
kesslerstuff@babel/runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.07.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuffqrcodeperpetualmaterialMITgit://github.com/soldair/node-qrcode.git1.5.31.5.3^1.5.3Ryan Day
kesslerstuffuuidperpetualmaterialMITgit+https://github.com/uuidjs/uuid.git9.0.19.0.1^9.0.0n/a
kesslerstuff@babel/coreperpetualmaterialMIThttps://github.com/babel/babel.git7.24.07.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/eslint-parserperpetualmaterialMIThttps://github.com/babel/babel.git7.23.107.23.10^7.23.10The Babel Team (https://babel.dev/team)
kesslerstuff@babel/plugin-transform-runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.07.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/preset-envperpetualmaterialMIThttps://github.com/babel/babel.git7.24.07.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/registerperpetualmaterialMIThttps://github.com/babel/babel.git7.23.77.23.7^7.22.15The Babel Team (https://babel.dev/team)
kesslerstuffautoprefixerperpetualmaterialMITgit+https://github.com/postcss/autoprefixer.git10.4.1810.4.18^10.4.18Andrey Sitnik
kesslerstuffbabel-loaderperpetualmaterialMIThttps://github.com/babel/babel-loader.git9.1.39.1.3^9.1.3Luis Couto
kesslerstuffbabel-plugin-transform-minify-booleansperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-plugin-transform-remove-debuggerperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-preset-minifyperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-preset-minify0.5.20.5.2^0.5.2amasad
kesslerstuffbrowserslistperpetualmaterialMITgit+https://github.com/browserslist/browserslist.git4.23.04.23.0^4.23.0Andrey Sitnik
kesslerstuffcopy-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/copy-webpack-plugin.git12.0.212.0.2^12.0.2Len Boyette
kesslerstuffcross-envperpetualmaterialMITgit+https://github.com/kentcdodds/cross-env.git7.0.37.0.3^7.0.3Kent C. Dodds (https://kentcdodds.com)
kesslerstuffcrypto-browserifyperpetualmaterialMITgit://github.com/crypto-browserify/crypto-browserify.git3.12.03.12.0^3.12.0Dominic Tarr (dominictarr.com)
kesslerstuffcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/css-loader.git6.10.06.10.0^6.10.0Tobias Koppers @sokra
kesslerstuffcss-minimizer-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git6.0.06.0.0^6.0.0Loann Neveu
kesslerstuffdotenvperpetualmaterialBSD-2-Clausegit://github.com/motdotla/dotenv.git16.4.516.4.5^16.4.5n/a
kesslerstuffdotenv-webpackperpetualmaterialMITgit+https://github.com/mrsteele/dotenv-webpack.git8.0.18.0.1^8.0.1Matt Steele (http://omnionline.us/)
kesslerstuffeslintperpetualmaterialMITgit+https://github.com/eslint/eslint.git8.57.08.57.08.57.0Nicholas C. Zakas
kesslerstuffeslint-config-standardperpetualmaterialMITgit://github.com/standard/eslint-config-standard.git17.1.017.1.0^17.1.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-friendly-formatterperpetualmaterialMITgit+https://github.com/royriojas/eslint-friendly-formatter.git4.0.14.0.1^4.0.1Roy Riojas http://royriojas.com
kesslerstuffeslint-plugin-importperpetualmaterialMITgit+https://github.com/import-js/eslint-plugin-import.git2.29.12.29.1^2.29.0Ben Mosher
kesslerstuffeslint-plugin-nperpetualmaterialMITgit+https://github.com/eslint-community/eslint-plugin-n.git16.6.216.6.2^16.6.2Toru Nagashima
kesslerstuffeslint-plugin-promiseperpetualmaterialISCgit+https://github.com/eslint-community/eslint-plugin-promise.git6.1.16.1.1^6.1.1jden
kesslerstuffeslint-plugin-standardperpetualmaterialMITgit+https://github.com/standard/eslint-plugin-standard.git5.0.05.0.0^5.0.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/eslint-webpack-plugin.git4.0.14.0.1^4.0.1Ricardo Gobbo de Souza
kesslerstuffexports-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/exports-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstufffile-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/file-loader.git6.2.06.2.0^6.0.0Tobias Koppers @sokra
kesslerstuffhtml-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/html-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffhtml-webpack-pluginperpetualmaterialMITgit+https://github.com/jantimon/html-webpack-plugin.git5.6.05.6.0^5.5.3Jan Nicklas (https://github.com/jantimon)
kesslerstuffmini-css-extract-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/mini-css-extract-plugin.git2.8.12.8.1^2.8.1Tobias Koppers @sokra
kesslerstuffnoop-loaderperpetualmaterialISCgit+https://github.com/KnutHelland/noop-loader.git1.0.01.0.0^1.0.0Knut Helland
kesslerstuffpathperpetualmaterialMITgit://github.com/jinder/path.git0.12.70.12.7^0.12.7Joyent http://www.joyent.com
kesslerstuffpostcssperpetualmaterialMITgit+https://github.com/postcss/postcss.git8.4.358.4.35^8.4.35Andrey Sitnik
kesslerstuffpostcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/postcss-loader.git8.1.18.1.1^8.1.1Andrey Sitnik
kesslerstuffpostcss-sassperpetualmaterialMITgit+https://github.com/AleshaOleg/postcss-sass.git0.5.00.5.0^0.5.0Oleh Aloshkin
kesslerstuffprecssperpetualmaterialCC0-1.0git+https://github.com/jonathantneal/precss.git4.0.04.0.0^4.0.0Jonathan Neal
kesslerstuffrequire-dirperpetualmaterialMITgit://github.com/aseemk/requireDir.git1.2.01.2.0^1.2.0Aseem Kishore
kesslerstuffrimrafperpetualmaterialISCgit://github.com/isaacs/rimraf.git5.0.55.0.5^5.0.1Isaac Z. Schlueter (http://blog.izs.me/)
kesslerstuffsassperpetualmaterialMITgit+https://github.com/sass/dart-sass.git1.71.11.71.1^1.71.1Natalie Weizenbaum nweiz@google.com https://github.com/nex3
kesslerstuffsass-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/sass-loader.git14.1.114.1.1^14.1.1J. Tangelder
kesslerstuffsource-map-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/source-map-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffstream-browserifyperpetualmaterialMITgit://github.com/browserify/stream-browserify.git3.0.03.0.0^3.0.0James Halliday mail@substack.net http://substack.net
kesslerstuffstreamifyperpetualmaterialMITgit://github.com/fent/node-streamify.git1.0.01.0.0^1.0.0fent (https://github.com/fent)
kesslerstuffstyle-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/style-loader.git3.3.43.3.4^3.3.4Tobias Koppers @sokra
kesslerstuffstylelintperpetualmaterialMITgit+https://github.com/stylelint/stylelint.git16.2.116.2.1^16.2.1stylelint
kesslerstuffstylelint-config-recommended-scssperpetualmaterialMITgit+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git14.0.014.0.0^14.0.0kristerkari
kesslerstuffstylelint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/stylelint-webpack-plugin.git5.0.05.0.0^5.0.0Ricardo Gobbo de Souza
kesslerstuffsvg-inline-loaderperpetualmaterialMITgit+ssh://git@github.com/sairion/svg-inline-loader.git0.8.20.8.2^0.8.2Jaeho Lee
kesslerstuffterser-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/terser-webpack-plugin.git5.3.105.3.10^5.3.9webpack Contrib Team
kesslerstuffurl-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/url-loader.git4.1.14.1.1^4.1.0Tobias Koppers @sokra
kesslerstuffwebextension-polyfillperpetualmaterialMPL-2.0git+https://github.com/mozilla/webextension-polyfill.git0.10.00.10.0^0.10.0Mozilla
kesslerstuffwebpackperpetualmaterialMITgit+https://github.com/webpack/webpack.git5.90.35.90.3^5.90.3Tobias Koppers @sokra
kesslerstuffwebpack-cliperpetualmaterialMITgit+https://github.com/webpack/webpack-cli.git5.1.45.1.4^5.1.4n/a
kesslerstuffwebpack-node-externalsperpetualmaterialMITgit+https://github.com/liady/webpack-node-externals.git3.0.03.0.0^3.0.0Liad Yosef https://github.com/liady
kesslerstuffwsperpetualmaterialMITgit+https://github.com/websockets/ws.git8.16.08.16.0^8.14.1Einar Otto Stangvik (http://2x.io)
kesslerstuffyarn-or-npmperpetualmaterialMITgit@github.com:camacho/yarn-or-npm.git3.0.13.0.1^3.0.1Patrick Camacho
+ + + +
departmentrelated tonamelicense periodmaterial / not materiallicense typelinkremote versioninstalled versiondefined versionauthor
kesslerstuff@babel/runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuffqrcodeperpetualmaterialMITgit://github.com/soldair/node-qrcode.git1.5.31.5.3^1.5.3Ryan Day
kesslerstuffuuidperpetualmaterialMITgit+https://github.com/uuidjs/uuid.git9.0.19.0.1^9.0.0n/a
kesslerstuff@babel/coreperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/eslint-parserperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.23.10^7.23.10The Babel Team (https://babel.dev/team)
kesslerstuff@babel/plugin-transform-runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/preset-envperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/registerperpetualmaterialMIThttps://github.com/babel/babel.git7.23.77.23.7^7.22.15The Babel Team (https://babel.dev/team)
kesslerstuffautoprefixerperpetualmaterialMITgit+https://github.com/postcss/autoprefixer.git10.4.1910.4.18^10.4.18Andrey Sitnik
kesslerstuffbabel-loaderperpetualmaterialMIThttps://github.com/babel/babel-loader.git9.1.39.1.3^9.1.3Luis Couto
kesslerstuffbabel-plugin-transform-minify-booleansperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-plugin-transform-remove-debuggerperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-preset-minifyperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-preset-minify0.5.20.5.2^0.5.2amasad
kesslerstuffbrowserslistperpetualmaterialMITgit+https://github.com/browserslist/browserslist.git4.23.04.23.0^4.23.0Andrey Sitnik
kesslerstuffcopy-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/copy-webpack-plugin.git12.0.212.0.2^12.0.2Len Boyette
kesslerstuffcross-envperpetualmaterialMITgit+https://github.com/kentcdodds/cross-env.git7.0.37.0.3^7.0.3Kent C. Dodds (https://kentcdodds.com)
kesslerstuffcrypto-browserifyperpetualmaterialMITgit://github.com/crypto-browserify/crypto-browserify.git3.12.03.12.0^3.12.0Dominic Tarr (dominictarr.com)
kesslerstuffcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/css-loader.git6.10.06.10.0^6.10.0Tobias Koppers @sokra
kesslerstuffcss-minimizer-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git6.0.06.0.0^6.0.0Loann Neveu
kesslerstuffdotenvperpetualmaterialBSD-2-Clausegit://github.com/motdotla/dotenv.git16.4.516.4.5^16.4.5n/a
kesslerstuffdotenv-webpackperpetualmaterialMITgit+https://github.com/mrsteele/dotenv-webpack.git8.1.08.0.1^8.0.1Matt Steele (http://omnionline.us/)
kesslerstuffeslintperpetualmaterialMITgit+https://github.com/eslint/eslint.git8.57.08.57.08.57.0Nicholas C. Zakas
kesslerstuffeslint-config-standardperpetualmaterialMITgit://github.com/standard/eslint-config-standard.git17.1.017.1.0^17.1.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-friendly-formatterperpetualmaterialMITgit+https://github.com/royriojas/eslint-friendly-formatter.git4.0.14.0.1^4.0.1Roy Riojas http://royriojas.com
kesslerstuffeslint-plugin-importperpetualmaterialMITgit+https://github.com/import-js/eslint-plugin-import.git2.29.12.29.1^2.29.0Ben Mosher
kesslerstuffeslint-plugin-nperpetualmaterialMITgit+https://github.com/eslint-community/eslint-plugin-n.git16.6.216.6.2^16.6.2Toru Nagashima
kesslerstuffeslint-plugin-promiseperpetualmaterialISCgit+https://github.com/eslint-community/eslint-plugin-promise.git6.1.16.1.1^6.1.1jden
kesslerstuffeslint-plugin-standardperpetualmaterialMITgit+https://github.com/standard/eslint-plugin-standard.git5.0.05.0.0^5.0.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/eslint-webpack-plugin.git4.1.04.1.0^4.1.0Ricardo Gobbo de Souza
kesslerstuffexports-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/exports-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstufffile-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/file-loader.git6.2.06.2.0^6.0.0Tobias Koppers @sokra
kesslerstuffhtml-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/html-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffhtml-webpack-pluginperpetualmaterialMITgit+https://github.com/jantimon/html-webpack-plugin.git5.6.05.6.0^5.5.3Jan Nicklas (https://github.com/jantimon)
kesslerstuffmini-css-extract-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/mini-css-extract-plugin.git2.8.12.8.1^2.8.1Tobias Koppers @sokra
kesslerstuffnoop-loaderperpetualmaterialISCgit+https://github.com/KnutHelland/noop-loader.git1.0.01.0.0^1.0.0Knut Helland
kesslerstuffpathperpetualmaterialMITgit://github.com/jinder/path.git0.12.70.12.7^0.12.7Joyent http://www.joyent.com
kesslerstuffpostcssperpetualmaterialMITgit+https://github.com/postcss/postcss.git8.4.388.4.36^8.4.36Andrey Sitnik
kesslerstuffpostcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/postcss-loader.git8.1.18.1.1^8.1.1Andrey Sitnik
kesslerstuffpostcss-sassperpetualmaterialMITgit+https://github.com/AleshaOleg/postcss-sass.git0.5.00.5.0^0.5.0Oleh Aloshkin
kesslerstuffprecssperpetualmaterialCC0-1.0git+https://github.com/jonathantneal/precss.git4.0.04.0.0^4.0.0Jonathan Neal
kesslerstuffrequire-dirperpetualmaterialMITgit://github.com/aseemk/requireDir.git1.2.01.2.0^1.2.0Aseem Kishore
kesslerstuffrimrafperpetualmaterialISCgit://github.com/isaacs/rimraf.git5.0.55.0.5^5.0.1Isaac Z. Schlueter (http://blog.izs.me/)
kesslerstuffsassperpetualmaterialMITgit+https://github.com/sass/dart-sass.git1.72.01.72.0^1.72.0Natalie Weizenbaum nweiz@google.com https://github.com/nex3
kesslerstuffsass-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/sass-loader.git14.1.114.1.1^14.1.1J. Tangelder
kesslerstuffsource-map-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/source-map-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffstream-browserifyperpetualmaterialMITgit://github.com/browserify/stream-browserify.git3.0.03.0.0^3.0.0James Halliday mail@substack.net http://substack.net
kesslerstuffstreamifyperpetualmaterialMITgit://github.com/fent/node-streamify.git1.0.01.0.0^1.0.0fent (https://github.com/fent)
kesslerstuffstyle-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/style-loader.git3.3.43.3.4^3.3.4Tobias Koppers @sokra
kesslerstuffstylelintperpetualmaterialMITgit+https://github.com/stylelint/stylelint.git16.3.016.2.1^16.2.1stylelint
kesslerstuffstylelint-config-recommended-scssperpetualmaterialMITgit+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git14.0.014.0.0^14.0.0kristerkari
kesslerstuffstylelint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/stylelint-webpack-plugin.git5.0.05.0.0^5.0.0Ricardo Gobbo de Souza
kesslerstuffsvg-inline-loaderperpetualmaterialMITgit+ssh://git@github.com/sairion/svg-inline-loader.git0.8.20.8.2^0.8.2Jaeho Lee
kesslerstuffterser-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/terser-webpack-plugin.git5.3.105.3.10^5.3.9webpack Contrib Team
kesslerstuffurl-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/url-loader.git4.1.14.1.1^4.1.0Tobias Koppers @sokra
kesslerstuffwebextension-polyfillperpetualmaterialMPL-2.0git+https://github.com/mozilla/webextension-polyfill.git0.10.00.10.0^0.10.0Mozilla
kesslerstuffwebpackperpetualmaterialMITgit+https://github.com/webpack/webpack.git5.91.05.90.3^5.90.3Tobias Koppers @sokra
kesslerstuffwebpack-cliperpetualmaterialMITgit+https://github.com/webpack/webpack-cli.git5.1.45.1.4^5.1.4n/a
kesslerstuffwebpack-node-externalsperpetualmaterialMITgit+https://github.com/liady/webpack-node-externals.git3.0.03.0.0^3.0.0Liad Yosef https://github.com/liady
kesslerstuffwsperpetualmaterialMITgit+https://github.com/websockets/ws.git8.16.08.16.0^8.14.1Einar Otto Stangvik (http://2x.io)
kesslerstuffyarn-or-npmperpetualmaterialMITgit@github.com:camacho/yarn-or-npm.git3.0.13.0.1^3.0.1Patrick Camacho
+ + diff --git a/open-source-licenses.json b/open-source-licenses.json index d27df0d..db8c86e 100644 --- a/open-source-licenses.json +++ b/open-source-licenses.json @@ -34,3 +34,4 @@ [{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.9","installedVersion":"7.23.9","definedVersion":"^7.23.9","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.10","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.9","installedVersion":"7.23.9","definedVersion":"^7.23.9","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.9","installedVersion":"7.23.9","definedVersion":"^7.23.9","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.9","installedVersion":"7.23.9","definedVersion":"^7.23.9","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.17","installedVersion":"10.4.17","definedVersion":"^10.4.17","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-dynamic-import-node","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git","remoteVersion":"2.3.3","installedVersion":"2.3.3","definedVersion":"^2.3.3","author":"Jordan Gensler "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-console","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-console","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.0.1","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.0","installedVersion":"2.8.0","definedVersion":"^2.8.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.35","installedVersion":"8.4.35","definedVersion":"^8.4.35","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.0","installedVersion":"8.1.0","definedVersion":"^8.1.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.71.1","installedVersion":"1.71.1","definedVersion":"^1.71.1","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"15.11.0","installedVersion":"15.11.0","definedVersion":"^15.10.3","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"13.1.0","installedVersion":"13.1.0","definedVersion":"^13.1.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.90.3","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"}] [{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.10","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.18","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-dynamic-import-node","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git","remoteVersion":"2.3.3","installedVersion":"2.3.3","definedVersion":"^2.3.3","author":"Jordan Gensler "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-console","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-console","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.0.1","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.35","installedVersion":"8.4.35","definedVersion":"^8.4.35","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.71.1","installedVersion":"1.71.1","definedVersion":"^1.71.1","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"15.11.0","installedVersion":"15.11.0","definedVersion":"^15.10.3","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"13.1.0","installedVersion":"13.1.0","definedVersion":"^13.1.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.90.3","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] [{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.10","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.18","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.0.1","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.35","installedVersion":"8.4.35","definedVersion":"^8.4.35","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.71.1","installedVersion":"1.71.1","definedVersion":"^1.71.1","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"16.2.1","installedVersion":"16.2.1","definedVersion":"^16.2.1","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"14.0.0","installedVersion":"14.0.0","definedVersion":"^14.0.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.90.3","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] +[{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.19","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.1.0","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.1.0","installedVersion":"4.1.0","definedVersion":"^4.1.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.38","installedVersion":"8.4.36","definedVersion":"^8.4.36","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.72.0","installedVersion":"1.72.0","definedVersion":"^1.72.0","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"16.3.0","installedVersion":"16.2.1","definedVersion":"^16.2.1","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"14.0.0","installedVersion":"14.0.0","definedVersion":"^14.0.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.91.0","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] From 0732a971dc0fa7a889bdbbb7abd9cfca0fccf369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Zaja=CC=A8c?= Date: Mon, 25 Mar 2024 14:06:50 +0100 Subject: [PATCH 22/30] #1515 browserlist update script FIX --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d323aab..84c0cc6 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "safari-dev": "yon clean && yon generate-locales && npx -y cross-env EXT_PLATFORM=Safari node_modules/.bin/webpack --mode development --progress --config webpack/development.config.js", "safari-prod": "yon clean && yon generate-locales && yon browserlist-update && npx -y cross-env EXT_PLATFORM=Safari NODE_ENV=production node_modules/.bin/webpack --mode production --progress --config webpack/production.config.js", "all-build": "npx -y rimraf --glob ./build/* && yon generate-license-info && yon chrome-build && yon opera-build && yon firefox-build && yon edge-build", - "browserlist-update": "npx -y update-browserslist-db@latest", + "browserlist-update": "npx -y browserslist@latest --update-db", "loco-export": "node webpack/utils/locoExport.js", "loco-import": "node webpack/utils/locoImport.js", "check-build-directory": "node webpack/utils/checkBuildDirectoryExists.js", From 1a12a6cfcf12b18aff6c2b8eb88a2330490bd7e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Zaja=CC=A8c?= Date: Mon, 25 Mar 2024 14:10:33 +0100 Subject: [PATCH 23/30] #1515 xCode build --- .../project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj b/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj index f92d139..71f294c 100644 --- a/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj +++ b/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj @@ -431,7 +431,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 55; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -445,7 +445,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.6.4; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -467,7 +467,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 55; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -481,7 +481,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.6.4; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -505,7 +505,7 @@ CODE_SIGN_ENTITLEMENTS = "macOS (App)/2FAS - Two factor authentication.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 55; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -520,7 +520,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.6.4; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, @@ -546,7 +546,7 @@ CODE_SIGN_IDENTITY = "Apple Distribution"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 55; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -561,7 +561,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 11.0; - MARKETING_VERSION = 1.6.4; + MARKETING_VERSION = 1.7.0; OTHER_LDFLAGS = ( "-framework", SafariServices, From 628e4b4f519fa7ede1fe492ef95d7ae2f1343bb7 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Tue, 2 Apr 2024 18:05:30 +0200 Subject: [PATCH 24/30] #1515 storeLog ignore improvement --- src/partials/storeLog.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/partials/storeLog.js b/src/partials/storeLog.js index 838fe59..ee7bf2b 100644 --- a/src/partials/storeLog.js +++ b/src/partials/storeLog.js @@ -92,9 +92,11 @@ const storeLog = async (level, logID = 0, errObj, url = '') => { (storage?.browserInfo?.browser_name === 'Chrome' && storage?.browserInfo?.browser_version === '107' && logID === 14) || (storage?.browserInfo?.browser_name === 'Chrome' && storage?.browserInfo?.browser_version === '107.0.0.0' && logID === 14) || (c?.errorInfo?.message?.includes('FILE_ERROR_NO_SPACE')) || - (c?.status === 407) || + (c?.errorInfo.status === 407) || (c?.errorInfo?.message?.includes('An unexpected error occurred')) || - (c?.errorInfo?.message?.includes('Refused to run the JavaScript URL')) + (c?.errorInfo?.message?.includes('Refused to run the JavaScript URL')) || + (c?.errorInfo?.message?.includes('QuotaExceededError: storage.local API call exceeded its quota limitations')) || // @TODO: future + (c?.errorInfo?.statusText?.includes('Proxy Authentication Required')) ) { return false; } From 7a2f806dc985a73a2ab167a13c19c220635ac451 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Tue, 2 Apr 2024 18:05:49 +0200 Subject: [PATCH 25/30] #1515 sendMessageToAllFrames - fix (Allegro case) --- src/background/functions/sendMessageToAllFrames.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/background/functions/sendMessageToAllFrames.js b/src/background/functions/sendMessageToAllFrames.js index 65307a0..8c6537b 100644 --- a/src/background/functions/sendMessageToAllFrames.js +++ b/src/background/functions/sendMessageToAllFrames.js @@ -18,20 +18,18 @@ // const browser = require('webextension-polyfill'); -const config = require('../../config'); -const TwoFasNotification = require('../../notification'); const sendMessageToAllFrames = async (tabId, message) => { const frames = await browser.webNavigation.getAllFrames({ tabId }); - + return Promise.all(frames.map(frame => { - return browser.tabs.sendMessage(tabId, message, { frameId: frame.frameId }) + return browser.tabs.sendMessage(tabId, message, { frameId: frame.frameId }).catch(() => Promise.resolve(false)); })).then(res => { return res.map(frame => { if (!frame) { return false; } - + switch (frame?.status) { case 'activeElement': { return frame; @@ -42,11 +40,7 @@ const sendMessageToAllFrames = async (tabId, message) => { } } }); - }).catch(err => { - if (err.toString().includes('Receiving end does not exist')) { - return TwoFasNotification.show(config.Texts.Error.LackOfTab, tabId); - } - }); + }).catch(() => false); }; module.exports = sendMessageToAllFrames; From 9cec9418da41efe11c3b96ae8fa71db5e6854f39 Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Tue, 2 Apr 2024 18:09:11 +0200 Subject: [PATCH 26/30] #1515 OSS licenses --- open-source-licenses.html | 50 +++++++++++++++++++++++++++++++++++++++ open-source-licenses.json | 1 + 2 files changed, 51 insertions(+) diff --git a/open-source-licenses.html b/open-source-licenses.html index 9a2b95c..62b37c4 100644 --- a/open-source-licenses.html +++ b/open-source-licenses.html @@ -1848,3 +1848,53 @@ th, td {
departmentrelated tonamelicense periodmaterial / not materiallicense typelinkremote versioninstalled versiondefined versionauthor
kesslerstuff@babel/runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuffqrcodeperpetualmaterialMITgit://github.com/soldair/node-qrcode.git1.5.31.5.3^1.5.3Ryan Day
kesslerstuffuuidperpetualmaterialMITgit+https://github.com/uuidjs/uuid.git9.0.19.0.1^9.0.0n/a
kesslerstuff@babel/coreperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/eslint-parserperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.23.10^7.23.10The Babel Team (https://babel.dev/team)
kesslerstuff@babel/plugin-transform-runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/preset-envperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.0^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/registerperpetualmaterialMIThttps://github.com/babel/babel.git7.23.77.23.7^7.22.15The Babel Team (https://babel.dev/team)
kesslerstuffautoprefixerperpetualmaterialMITgit+https://github.com/postcss/autoprefixer.git10.4.1910.4.18^10.4.18Andrey Sitnik
kesslerstuffbabel-loaderperpetualmaterialMIThttps://github.com/babel/babel-loader.git9.1.39.1.3^9.1.3Luis Couto
kesslerstuffbabel-plugin-transform-minify-booleansperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-plugin-transform-remove-debuggerperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-preset-minifyperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-preset-minify0.5.20.5.2^0.5.2amasad
kesslerstuffbrowserslistperpetualmaterialMITgit+https://github.com/browserslist/browserslist.git4.23.04.23.0^4.23.0Andrey Sitnik
kesslerstuffcopy-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/copy-webpack-plugin.git12.0.212.0.2^12.0.2Len Boyette
kesslerstuffcross-envperpetualmaterialMITgit+https://github.com/kentcdodds/cross-env.git7.0.37.0.3^7.0.3Kent C. Dodds (https://kentcdodds.com)
kesslerstuffcrypto-browserifyperpetualmaterialMITgit://github.com/crypto-browserify/crypto-browserify.git3.12.03.12.0^3.12.0Dominic Tarr (dominictarr.com)
kesslerstuffcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/css-loader.git6.10.06.10.0^6.10.0Tobias Koppers @sokra
kesslerstuffcss-minimizer-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git6.0.06.0.0^6.0.0Loann Neveu
kesslerstuffdotenvperpetualmaterialBSD-2-Clausegit://github.com/motdotla/dotenv.git16.4.516.4.5^16.4.5n/a
kesslerstuffdotenv-webpackperpetualmaterialMITgit+https://github.com/mrsteele/dotenv-webpack.git8.1.08.0.1^8.0.1Matt Steele (http://omnionline.us/)
kesslerstuffeslintperpetualmaterialMITgit+https://github.com/eslint/eslint.git8.57.08.57.08.57.0Nicholas C. Zakas
kesslerstuffeslint-config-standardperpetualmaterialMITgit://github.com/standard/eslint-config-standard.git17.1.017.1.0^17.1.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-friendly-formatterperpetualmaterialMITgit+https://github.com/royriojas/eslint-friendly-formatter.git4.0.14.0.1^4.0.1Roy Riojas http://royriojas.com
kesslerstuffeslint-plugin-importperpetualmaterialMITgit+https://github.com/import-js/eslint-plugin-import.git2.29.12.29.1^2.29.0Ben Mosher
kesslerstuffeslint-plugin-nperpetualmaterialMITgit+https://github.com/eslint-community/eslint-plugin-n.git16.6.216.6.2^16.6.2Toru Nagashima
kesslerstuffeslint-plugin-promiseperpetualmaterialISCgit+https://github.com/eslint-community/eslint-plugin-promise.git6.1.16.1.1^6.1.1jden
kesslerstuffeslint-plugin-standardperpetualmaterialMITgit+https://github.com/standard/eslint-plugin-standard.git5.0.05.0.0^5.0.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/eslint-webpack-plugin.git4.1.04.1.0^4.1.0Ricardo Gobbo de Souza
kesslerstuffexports-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/exports-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstufffile-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/file-loader.git6.2.06.2.0^6.0.0Tobias Koppers @sokra
kesslerstuffhtml-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/html-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffhtml-webpack-pluginperpetualmaterialMITgit+https://github.com/jantimon/html-webpack-plugin.git5.6.05.6.0^5.5.3Jan Nicklas (https://github.com/jantimon)
kesslerstuffmini-css-extract-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/mini-css-extract-plugin.git2.8.12.8.1^2.8.1Tobias Koppers @sokra
kesslerstuffnoop-loaderperpetualmaterialISCgit+https://github.com/KnutHelland/noop-loader.git1.0.01.0.0^1.0.0Knut Helland
kesslerstuffpathperpetualmaterialMITgit://github.com/jinder/path.git0.12.70.12.7^0.12.7Joyent http://www.joyent.com
kesslerstuffpostcssperpetualmaterialMITgit+https://github.com/postcss/postcss.git8.4.388.4.36^8.4.36Andrey Sitnik
kesslerstuffpostcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/postcss-loader.git8.1.18.1.1^8.1.1Andrey Sitnik
kesslerstuffpostcss-sassperpetualmaterialMITgit+https://github.com/AleshaOleg/postcss-sass.git0.5.00.5.0^0.5.0Oleh Aloshkin
kesslerstuffprecssperpetualmaterialCC0-1.0git+https://github.com/jonathantneal/precss.git4.0.04.0.0^4.0.0Jonathan Neal
kesslerstuffrequire-dirperpetualmaterialMITgit://github.com/aseemk/requireDir.git1.2.01.2.0^1.2.0Aseem Kishore
kesslerstuffrimrafperpetualmaterialISCgit://github.com/isaacs/rimraf.git5.0.55.0.5^5.0.1Isaac Z. Schlueter (http://blog.izs.me/)
kesslerstuffsassperpetualmaterialMITgit+https://github.com/sass/dart-sass.git1.72.01.72.0^1.72.0Natalie Weizenbaum nweiz@google.com https://github.com/nex3
kesslerstuffsass-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/sass-loader.git14.1.114.1.1^14.1.1J. Tangelder
kesslerstuffsource-map-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/source-map-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffstream-browserifyperpetualmaterialMITgit://github.com/browserify/stream-browserify.git3.0.03.0.0^3.0.0James Halliday mail@substack.net http://substack.net
kesslerstuffstreamifyperpetualmaterialMITgit://github.com/fent/node-streamify.git1.0.01.0.0^1.0.0fent (https://github.com/fent)
kesslerstuffstyle-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/style-loader.git3.3.43.3.4^3.3.4Tobias Koppers @sokra
kesslerstuffstylelintperpetualmaterialMITgit+https://github.com/stylelint/stylelint.git16.3.016.2.1^16.2.1stylelint
kesslerstuffstylelint-config-recommended-scssperpetualmaterialMITgit+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git14.0.014.0.0^14.0.0kristerkari
kesslerstuffstylelint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/stylelint-webpack-plugin.git5.0.05.0.0^5.0.0Ricardo Gobbo de Souza
kesslerstuffsvg-inline-loaderperpetualmaterialMITgit+ssh://git@github.com/sairion/svg-inline-loader.git0.8.20.8.2^0.8.2Jaeho Lee
kesslerstuffterser-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/terser-webpack-plugin.git5.3.105.3.10^5.3.9webpack Contrib Team
kesslerstuffurl-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/url-loader.git4.1.14.1.1^4.1.0Tobias Koppers @sokra
kesslerstuffwebextension-polyfillperpetualmaterialMPL-2.0git+https://github.com/mozilla/webextension-polyfill.git0.10.00.10.0^0.10.0Mozilla
kesslerstuffwebpackperpetualmaterialMITgit+https://github.com/webpack/webpack.git5.91.05.90.3^5.90.3Tobias Koppers @sokra
kesslerstuffwebpack-cliperpetualmaterialMITgit+https://github.com/webpack/webpack-cli.git5.1.45.1.4^5.1.4n/a
kesslerstuffwebpack-node-externalsperpetualmaterialMITgit+https://github.com/liady/webpack-node-externals.git3.0.03.0.0^3.0.0Liad Yosef https://github.com/liady
kesslerstuffwsperpetualmaterialMITgit+https://github.com/websockets/ws.git8.16.08.16.0^8.14.1Einar Otto Stangvik (http://2x.io)
kesslerstuffyarn-or-npmperpetualmaterialMITgit@github.com:camacho/yarn-or-npm.git3.0.13.0.1^3.0.1Patrick Camacho
+ + + +
departmentrelated tonamelicense periodmaterial / not materiallicense typelinkremote versioninstalled versiondefined versionauthor
kesslerstuff@babel/runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.1^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuffqrcodeperpetualmaterialMITgit://github.com/soldair/node-qrcode.git1.5.31.5.3^1.5.3Ryan Day
kesslerstuffuuidperpetualmaterialMITgit+https://github.com/uuidjs/uuid.git9.0.19.0.1^9.0.0n/a
kesslerstuff@babel/coreperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/eslint-parserperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.1^7.23.10The Babel Team (https://babel.dev/team)
kesslerstuff@babel/plugin-transform-runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/preset-envperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/registerperpetualmaterialMIThttps://github.com/babel/babel.git7.23.77.23.7^7.22.15The Babel Team (https://babel.dev/team)
kesslerstuffautoprefixerperpetualmaterialMITgit+https://github.com/postcss/autoprefixer.git10.4.1910.4.19^10.4.18Andrey Sitnik
kesslerstuffbabel-loaderperpetualmaterialMIThttps://github.com/babel/babel-loader.git9.1.39.1.3^9.1.3Luis Couto
kesslerstuffbabel-plugin-transform-minify-booleansperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-plugin-transform-remove-debuggerperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-preset-minifyperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-preset-minify0.5.20.5.2^0.5.2amasad
kesslerstuffbrowserslistperpetualmaterialMITgit+https://github.com/browserslist/browserslist.git4.23.04.23.0^4.23.0Andrey Sitnik
kesslerstuffcopy-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/copy-webpack-plugin.git12.0.212.0.2^12.0.2Len Boyette
kesslerstuffcross-envperpetualmaterialMITgit+https://github.com/kentcdodds/cross-env.git7.0.37.0.3^7.0.3Kent C. Dodds (https://kentcdodds.com)
kesslerstuffcrypto-browserifyperpetualmaterialMITgit://github.com/crypto-browserify/crypto-browserify.git3.12.03.12.0^3.12.0Dominic Tarr (dominictarr.com)
kesslerstuffcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/css-loader.git6.10.06.10.0^6.10.0Tobias Koppers @sokra
kesslerstuffcss-minimizer-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git6.0.06.0.0^6.0.0Loann Neveu
kesslerstuffdotenvperpetualmaterialBSD-2-Clausegit://github.com/motdotla/dotenv.git16.4.516.4.5^16.4.5n/a
kesslerstuffdotenv-webpackperpetualmaterialMITgit+https://github.com/mrsteele/dotenv-webpack.git8.1.08.1.0^8.0.1Matt Steele (http://omnionline.us/)
kesslerstuffeslintperpetualmaterialMITgit+https://github.com/eslint/eslint.git8.57.08.57.08.57.0Nicholas C. Zakas
kesslerstuffeslint-config-standardperpetualmaterialMITgit://github.com/standard/eslint-config-standard.git17.1.017.1.0^17.1.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-friendly-formatterperpetualmaterialMITgit+https://github.com/royriojas/eslint-friendly-formatter.git4.0.14.0.1^4.0.1Roy Riojas http://royriojas.com
kesslerstuffeslint-plugin-importperpetualmaterialMITgit+https://github.com/import-js/eslint-plugin-import.git2.29.12.29.1^2.29.0Ben Mosher
kesslerstuffeslint-plugin-nperpetualmaterialMITgit+https://github.com/eslint-community/eslint-plugin-n.git16.6.216.6.2^16.6.2Toru Nagashima
kesslerstuffeslint-plugin-promiseperpetualmaterialISCgit+https://github.com/eslint-community/eslint-plugin-promise.git6.1.16.1.1^6.1.1jden
kesslerstuffeslint-plugin-standardperpetualmaterialMITgit+https://github.com/standard/eslint-plugin-standard.git5.0.05.0.0^5.0.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/eslint-webpack-plugin.git4.1.04.1.0^4.1.0Ricardo Gobbo de Souza
kesslerstuffexports-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/exports-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstufffile-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/file-loader.git6.2.06.2.0^6.0.0Tobias Koppers @sokra
kesslerstuffhtml-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/html-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffhtml-webpack-pluginperpetualmaterialMITgit+https://github.com/jantimon/html-webpack-plugin.git5.6.05.6.0^5.5.3Jan Nicklas (https://github.com/jantimon)
kesslerstuffmini-css-extract-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/mini-css-extract-plugin.git2.8.12.8.1^2.8.1Tobias Koppers @sokra
kesslerstuffnoop-loaderperpetualmaterialISCgit+https://github.com/KnutHelland/noop-loader.git1.0.01.0.0^1.0.0Knut Helland
kesslerstuffpathperpetualmaterialMITgit://github.com/jinder/path.git0.12.70.12.7^0.12.7Joyent http://www.joyent.com
kesslerstuffpostcssperpetualmaterialMITgit+https://github.com/postcss/postcss.git8.4.388.4.38^8.4.36Andrey Sitnik
kesslerstuffpostcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/postcss-loader.git8.1.18.1.1^8.1.1Andrey Sitnik
kesslerstuffpostcss-sassperpetualmaterialMITgit+https://github.com/AleshaOleg/postcss-sass.git0.5.00.5.0^0.5.0Oleh Aloshkin
kesslerstuffprecssperpetualmaterialCC0-1.0git+https://github.com/jonathantneal/precss.git4.0.04.0.0^4.0.0Jonathan Neal
kesslerstuffrequire-dirperpetualmaterialMITgit://github.com/aseemk/requireDir.git1.2.01.2.0^1.2.0Aseem Kishore
kesslerstuffrimrafperpetualmaterialISCgit://github.com/isaacs/rimraf.git5.0.55.0.5^5.0.1Isaac Z. Schlueter (http://blog.izs.me/)
kesslerstuffsassperpetualmaterialMITgit+https://github.com/sass/dart-sass.git1.72.01.72.0^1.72.0Natalie Weizenbaum nweiz@google.com https://github.com/nex3
kesslerstuffsass-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/sass-loader.git14.1.114.1.1^14.1.1J. Tangelder
kesslerstuffsource-map-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/source-map-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffstream-browserifyperpetualmaterialMITgit://github.com/browserify/stream-browserify.git3.0.03.0.0^3.0.0James Halliday mail@substack.net http://substack.net
kesslerstuffstreamifyperpetualmaterialMITgit://github.com/fent/node-streamify.git1.0.01.0.0^1.0.0fent (https://github.com/fent)
kesslerstuffstyle-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/style-loader.git3.3.43.3.4^3.3.4Tobias Koppers @sokra
kesslerstuffstylelintperpetualmaterialMITgit+https://github.com/stylelint/stylelint.git16.3.116.3.0^16.2.1stylelint
kesslerstuffstylelint-config-recommended-scssperpetualmaterialMITgit+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git14.0.014.0.0^14.0.0kristerkari
kesslerstuffstylelint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/stylelint-webpack-plugin.git5.0.05.0.0^5.0.0Ricardo Gobbo de Souza
kesslerstuffsvg-inline-loaderperpetualmaterialMITgit+ssh://git@github.com/sairion/svg-inline-loader.git0.8.20.8.2^0.8.2Jaeho Lee
kesslerstuffterser-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/terser-webpack-plugin.git5.3.105.3.10^5.3.9webpack Contrib Team
kesslerstuffurl-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/url-loader.git4.1.14.1.1^4.1.0Tobias Koppers @sokra
kesslerstuffwebextension-polyfillperpetualmaterialMPL-2.0git+https://github.com/mozilla/webextension-polyfill.git0.10.00.10.0^0.10.0Mozilla
kesslerstuffwebpackperpetualmaterialMITgit+https://github.com/webpack/webpack.git5.91.05.91.0^5.90.3Tobias Koppers @sokra
kesslerstuffwebpack-cliperpetualmaterialMITgit+https://github.com/webpack/webpack-cli.git5.1.45.1.4^5.1.4n/a
kesslerstuffwebpack-node-externalsperpetualmaterialMITgit+https://github.com/liady/webpack-node-externals.git3.0.03.0.0^3.0.0Liad Yosef https://github.com/liady
kesslerstuffwsperpetualmaterialMITgit+https://github.com/websockets/ws.git8.16.08.16.0^8.14.1Einar Otto Stangvik (http://2x.io)
kesslerstuffyarn-or-npmperpetualmaterialMITgit@github.com:camacho/yarn-or-npm.git3.0.13.0.1^3.0.1Patrick Camacho
+ + diff --git a/open-source-licenses.json b/open-source-licenses.json index db8c86e..3ea4254 100644 --- a/open-source-licenses.json +++ b/open-source-licenses.json @@ -35,3 +35,4 @@ [{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.10","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.18","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-dynamic-import-node","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/airbnb/babel-plugin-dynamic-import-node.git","remoteVersion":"2.3.3","installedVersion":"2.3.3","definedVersion":"^2.3.3","author":"Jordan Gensler "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-console","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-console","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.0.1","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.35","installedVersion":"8.4.35","definedVersion":"^8.4.35","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.71.1","installedVersion":"1.71.1","definedVersion":"^1.71.1","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"15.11.0","installedVersion":"15.11.0","definedVersion":"^15.10.3","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"13.1.0","installedVersion":"13.1.0","definedVersion":"^13.1.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.90.3","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] [{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.10","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.0","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.18","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.0.1","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.35","installedVersion":"8.4.35","definedVersion":"^8.4.35","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.71.1","installedVersion":"1.71.1","definedVersion":"^1.71.1","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"16.2.1","installedVersion":"16.2.1","definedVersion":"^16.2.1","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"14.0.0","installedVersion":"14.0.0","definedVersion":"^14.0.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.90.3","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] [{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.23.10","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.0","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.19","installedVersion":"10.4.18","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.1.0","installedVersion":"8.0.1","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.1.0","installedVersion":"4.1.0","definedVersion":"^4.1.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.38","installedVersion":"8.4.36","definedVersion":"^8.4.36","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.72.0","installedVersion":"1.72.0","definedVersion":"^1.72.0","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"16.3.0","installedVersion":"16.2.1","definedVersion":"^16.2.1","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"14.0.0","installedVersion":"14.0.0","definedVersion":"^14.0.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.91.0","installedVersion":"5.90.3","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] +[{"department":"kessler","relatedTo":"stuff","name":"@babel/runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.24.1","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"qrcode","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/soldair/node-qrcode.git","remoteVersion":"1.5.3","installedVersion":"1.5.3","definedVersion":"^1.5.3","author":"Ryan Day "},{"department":"kessler","relatedTo":"stuff","name":"uuid","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/uuidjs/uuid.git","remoteVersion":"9.0.1","installedVersion":"9.0.1","definedVersion":"^9.0.0","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"@babel/core","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.3","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/eslint-parser","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.1","installedVersion":"7.24.1","definedVersion":"^7.23.10","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/plugin-transform-runtime","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.3","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/preset-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.24.3","installedVersion":"7.24.3","definedVersion":"^7.24.0","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"@babel/register","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel.git","remoteVersion":"7.23.7","installedVersion":"7.23.7","definedVersion":"^7.22.15","author":"The Babel Team (https://babel.dev/team)"},{"department":"kessler","relatedTo":"stuff","name":"autoprefixer","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/autoprefixer.git","remoteVersion":"10.4.19","installedVersion":"10.4.19","definedVersion":"^10.4.18","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"babel-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/babel-loader.git","remoteVersion":"9.1.3","installedVersion":"9.1.3","definedVersion":"^9.1.3","author":"Luis Couto "},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-minify-booleans","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-plugin-transform-remove-debugger","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger","remoteVersion":"6.9.4","installedVersion":"6.9.4","definedVersion":"^6.9.4","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"babel-preset-minify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"https://github.com/babel/minify/tree/master/packages/babel-preset-minify","remoteVersion":"0.5.2","installedVersion":"0.5.2","definedVersion":"^0.5.2","author":"amasad"},{"department":"kessler","relatedTo":"stuff","name":"browserslist","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/browserslist/browserslist.git","remoteVersion":"4.23.0","installedVersion":"4.23.0","definedVersion":"^4.23.0","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"copy-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/copy-webpack-plugin.git","remoteVersion":"12.0.2","installedVersion":"12.0.2","definedVersion":"^12.0.2","author":"Len Boyette"},{"department":"kessler","relatedTo":"stuff","name":"cross-env","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/kentcdodds/cross-env.git","remoteVersion":"7.0.3","installedVersion":"7.0.3","definedVersion":"^7.0.3","author":"Kent C. Dodds (https://kentcdodds.com)"},{"department":"kessler","relatedTo":"stuff","name":"crypto-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/crypto-browserify/crypto-browserify.git","remoteVersion":"3.12.0","installedVersion":"3.12.0","definedVersion":"^3.12.0","author":"Dominic Tarr (dominictarr.com)"},{"department":"kessler","relatedTo":"stuff","name":"css-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-loader.git","remoteVersion":"6.10.0","installedVersion":"6.10.0","definedVersion":"^6.10.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"css-minimizer-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git","remoteVersion":"6.0.0","installedVersion":"6.0.0","definedVersion":"^6.0.0","author":"Loann Neveu"},{"department":"kessler","relatedTo":"stuff","name":"dotenv","licensePeriod":"perpetual","material":"material","licenseType":"BSD-2-Clause","link":"git://github.com/motdotla/dotenv.git","remoteVersion":"16.4.5","installedVersion":"16.4.5","definedVersion":"^16.4.5","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"dotenv-webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/mrsteele/dotenv-webpack.git","remoteVersion":"8.1.0","installedVersion":"8.1.0","definedVersion":"^8.0.1","author":"Matt Steele (http://omnionline.us/)"},{"department":"kessler","relatedTo":"stuff","name":"eslint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint/eslint.git","remoteVersion":"8.57.0","installedVersion":"8.57.0","definedVersion":"8.57.0","author":"Nicholas C. Zakas "},{"department":"kessler","relatedTo":"stuff","name":"eslint-config-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/standard/eslint-config-standard.git","remoteVersion":"17.1.0","installedVersion":"17.1.0","definedVersion":"^17.1.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-friendly-formatter","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/royriojas/eslint-friendly-formatter.git","remoteVersion":"4.0.1","installedVersion":"4.0.1","definedVersion":"^4.0.1","author":"Roy Riojas http://royriojas.com"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-import","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/import-js/eslint-plugin-import.git","remoteVersion":"2.29.1","installedVersion":"2.29.1","definedVersion":"^2.29.0","author":"Ben Mosher "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-n","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/eslint-community/eslint-plugin-n.git","remoteVersion":"16.6.2","installedVersion":"16.6.2","definedVersion":"^16.6.2","author":"Toru Nagashima"},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-promise","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/eslint-community/eslint-plugin-promise.git","remoteVersion":"6.1.1","installedVersion":"6.1.1","definedVersion":"^6.1.1","author":"jden "},{"department":"kessler","relatedTo":"stuff","name":"eslint-plugin-standard","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/standard/eslint-plugin-standard.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Feross Aboukhadijeh feross@feross.org https://feross.org"},{"department":"kessler","relatedTo":"stuff","name":"eslint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/eslint-webpack-plugin.git","remoteVersion":"4.1.0","installedVersion":"4.1.0","definedVersion":"^4.1.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"exports-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/exports-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"file-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/file-loader.git","remoteVersion":"6.2.0","installedVersion":"6.2.0","definedVersion":"^6.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/html-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"html-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/jantimon/html-webpack-plugin.git","remoteVersion":"5.6.0","installedVersion":"5.6.0","definedVersion":"^5.5.3","author":"Jan Nicklas (https://github.com/jantimon)"},{"department":"kessler","relatedTo":"stuff","name":"mini-css-extract-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/mini-css-extract-plugin.git","remoteVersion":"2.8.1","installedVersion":"2.8.1","definedVersion":"^2.8.1","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"noop-loader","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git+https://github.com/KnutHelland/noop-loader.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"Knut Helland"},{"department":"kessler","relatedTo":"stuff","name":"path","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/jinder/path.git","remoteVersion":"0.12.7","installedVersion":"0.12.7","definedVersion":"^0.12.7","author":"Joyent http://www.joyent.com"},{"department":"kessler","relatedTo":"stuff","name":"postcss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/postcss/postcss.git","remoteVersion":"8.4.38","installedVersion":"8.4.38","definedVersion":"^8.4.36","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/postcss-loader.git","remoteVersion":"8.1.1","installedVersion":"8.1.1","definedVersion":"^8.1.1","author":"Andrey Sitnik "},{"department":"kessler","relatedTo":"stuff","name":"postcss-sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/AleshaOleg/postcss-sass.git","remoteVersion":"0.5.0","installedVersion":"0.5.0","definedVersion":"^0.5.0","author":"Oleh Aloshkin "},{"department":"kessler","relatedTo":"stuff","name":"precss","licensePeriod":"perpetual","material":"material","licenseType":"CC0-1.0","link":"git+https://github.com/jonathantneal/precss.git","remoteVersion":"4.0.0","installedVersion":"4.0.0","definedVersion":"^4.0.0","author":"Jonathan Neal "},{"department":"kessler","relatedTo":"stuff","name":"require-dir","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/aseemk/requireDir.git","remoteVersion":"1.2.0","installedVersion":"1.2.0","definedVersion":"^1.2.0","author":"Aseem Kishore "},{"department":"kessler","relatedTo":"stuff","name":"rimraf","licensePeriod":"perpetual","material":"material","licenseType":"ISC","link":"git://github.com/isaacs/rimraf.git","remoteVersion":"5.0.5","installedVersion":"5.0.5","definedVersion":"^5.0.1","author":"Isaac Z. Schlueter (http://blog.izs.me/)"},{"department":"kessler","relatedTo":"stuff","name":"sass","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/sass/dart-sass.git","remoteVersion":"1.72.0","installedVersion":"1.72.0","definedVersion":"^1.72.0","author":"Natalie Weizenbaum nweiz@google.com https://github.com/nex3"},{"department":"kessler","relatedTo":"stuff","name":"sass-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/sass-loader.git","remoteVersion":"14.1.1","installedVersion":"14.1.1","definedVersion":"^14.1.1","author":"J. Tangelder"},{"department":"kessler","relatedTo":"stuff","name":"source-map-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/source-map-loader.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stream-browserify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/browserify/stream-browserify.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"James Halliday mail@substack.net http://substack.net"},{"department":"kessler","relatedTo":"stuff","name":"streamify","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git://github.com/fent/node-streamify.git","remoteVersion":"1.0.0","installedVersion":"1.0.0","definedVersion":"^1.0.0","author":"fent (https://github.com/fent)"},{"department":"kessler","relatedTo":"stuff","name":"style-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/style-loader.git","remoteVersion":"3.3.4","installedVersion":"3.3.4","definedVersion":"^3.3.4","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"stylelint","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint/stylelint.git","remoteVersion":"16.3.1","installedVersion":"16.3.0","definedVersion":"^16.2.1","author":"stylelint"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-config-recommended-scss","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git","remoteVersion":"14.0.0","installedVersion":"14.0.0","definedVersion":"^14.0.0","author":"kristerkari"},{"department":"kessler","relatedTo":"stuff","name":"stylelint-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/stylelint-webpack-plugin.git","remoteVersion":"5.0.0","installedVersion":"5.0.0","definedVersion":"^5.0.0","author":"Ricardo Gobbo de Souza "},{"department":"kessler","relatedTo":"stuff","name":"svg-inline-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+ssh://git@github.com/sairion/svg-inline-loader.git","remoteVersion":"0.8.2","installedVersion":"0.8.2","definedVersion":"^0.8.2","author":"Jaeho Lee "},{"department":"kessler","relatedTo":"stuff","name":"terser-webpack-plugin","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/terser-webpack-plugin.git","remoteVersion":"5.3.10","installedVersion":"5.3.10","definedVersion":"^5.3.9","author":"webpack Contrib Team"},{"department":"kessler","relatedTo":"stuff","name":"url-loader","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack-contrib/url-loader.git","remoteVersion":"4.1.1","installedVersion":"4.1.1","definedVersion":"^4.1.0","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webextension-polyfill","licensePeriod":"perpetual","material":"material","licenseType":"MPL-2.0","link":"git+https://github.com/mozilla/webextension-polyfill.git","remoteVersion":"0.10.0","installedVersion":"0.10.0","definedVersion":"^0.10.0","author":"Mozilla"},{"department":"kessler","relatedTo":"stuff","name":"webpack","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack.git","remoteVersion":"5.91.0","installedVersion":"5.91.0","definedVersion":"^5.90.3","author":"Tobias Koppers @sokra"},{"department":"kessler","relatedTo":"stuff","name":"webpack-cli","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/webpack/webpack-cli.git","remoteVersion":"5.1.4","installedVersion":"5.1.4","definedVersion":"^5.1.4","author":"n/a"},{"department":"kessler","relatedTo":"stuff","name":"webpack-node-externals","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/liady/webpack-node-externals.git","remoteVersion":"3.0.0","installedVersion":"3.0.0","definedVersion":"^3.0.0","author":"Liad Yosef https://github.com/liady"},{"department":"kessler","relatedTo":"stuff","name":"ws","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git+https://github.com/websockets/ws.git","remoteVersion":"8.16.0","installedVersion":"8.16.0","definedVersion":"^8.14.1","author":"Einar Otto Stangvik (http://2x.io)"},{"department":"kessler","relatedTo":"stuff","name":"yarn-or-npm","licensePeriod":"perpetual","material":"material","licenseType":"MIT","link":"git@github.com:camacho/yarn-or-npm.git","remoteVersion":"3.0.1","installedVersion":"3.0.1","definedVersion":"^3.0.1","author":"Patrick Camacho "}] From ba3333c88b5159d6cef526cea7993342241d1159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Zaja=CC=A8c?= Date: Tue, 2 Apr 2024 18:18:17 +0200 Subject: [PATCH 27/30] #1515 xCode build --- .../project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj b/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj index 71f294c..6d276f1 100644 --- a/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj +++ b/2FAS - Two factor authentication/2FAS - Two Factor Authentication.xcodeproj/project.pbxproj @@ -431,7 +431,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -467,7 +467,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -505,7 +505,7 @@ CODE_SIGN_ENTITLEMENTS = "macOS (App)/2FAS - Two factor authentication.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; @@ -546,7 +546,7 @@ CODE_SIGN_IDENTITY = "Apple Distribution"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 55; + CURRENT_PROJECT_VERSION = 56; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_HARDENED_RUNTIME = YES; From 26176c0fe7f164309770542a815c588a1d74d7ef Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Wed, 3 Apr 2024 15:31:26 +0200 Subject: [PATCH 28/30] #1515 tokenNotification close + styles improvement --- src/content/functions/tokenNotification.js | 40 ++++++++++++++++------ src/content/styles/content_script.scss | 39 +++++++++++++++++---- src/images/notification-close.svg | 4 +++ 3 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 src/images/notification-close.svg diff --git a/src/content/functions/tokenNotification.js b/src/content/functions/tokenNotification.js index 4a3c4b7..25d6844 100644 --- a/src/content/functions/tokenNotification.js +++ b/src/content/functions/tokenNotification.js @@ -22,6 +22,7 @@ const isInFrame = require('./isInFrame'); const { createElement, createSVGElement, createTextElement } = require('../../partials/DOMElements'); const iconSrc = require('../../images/notification-logo.svg'); const copySrc = require('../../images/copy-icon.svg'); +const closeSrc = require('../../images/notification-close.svg'); const S = require('../../selectors'); const tokenNotification = token => { @@ -44,7 +45,27 @@ const tokenNotification = token => { tokenButton: null, tokenButtonText: null, notificationText: null, - p: null + p: null, + closeBtn: null, + close: null + }; + + const closeNotification = e => { + if (e) { + e.preventDefault(); + e.stopPropagation(); + } + + if (n && n.notification) { + n.notification.classList.remove('visible'); + } + + setTimeout(() => { + if (n && n.notification) { + n.notification.classList.add('hidden'); + n = null; + } + }, 300); }; if (!n.container) { @@ -53,6 +74,12 @@ const tokenNotification = token => { } n.notification = createElement('div', 'twofas-be-notification'); + n.closeBtn = createElement('button', 'twofas-be-notification-close'); + n.closeBtn.addEventListener('click', closeNotification); + n.close = createSVGElement(closeSrc); + n.closeBtn.appendChild(n.close); + n.notification.appendChild(n.closeBtn); + n.firstCol = createElement('div', 'twofas-be-col'); n.logo = createSVGElement(iconSrc); @@ -99,16 +126,7 @@ const tokenNotification = token => { setTimeout(() => n.notification.classList.add('visible'), 300); window.addEventListener('beforeunload', () => { - if (n && n.notification) { - n.notification.classList.remove('visible'); - } - - setTimeout(() => { - if (n && n.notification) { - n.notification.classList.add('hidden'); - n = null; - } - }, 300); + closeNotification(); }); setTimeout(() => { diff --git a/src/content/styles/content_script.scss b/src/content/styles/content_script.scss index 416b92e..6b37fc4 100644 --- a/src/content/styles/content_script.scss +++ b/src/content/styles/content_script.scss @@ -57,9 +57,12 @@ margin-bottom: 25px !important; max-width: 380px !important; overflow: hidden !important; + position: relative !important; text-align: left !important; transform: translateX(425px) !important; transition: box-shadow .3s ease-in-out, max-height .3s ease-in-out, margin-bottom .3s ease-in-out, transform .3s ease-in-out !important; + z-index: 999999 !important; + z-index: infinite !important; &.visible { box-shadow: 0 0 20px 5px $shadow-color !important; @@ -71,6 +74,24 @@ max-height: 0 !important; } + &-close { + appearance: none !important; + background: transparent !important; + border: 0 !important; + cursor: pointer !important; + padding: 0 !important; + position: absolute !important; + right: 2px !important; + top: 2px !important; + + > svg { + height: auto !important; + margin-right: 0 !important; + max-width: unset !important; + width: 24px !important; + } + } + &-buttons { border-radius: 0 !important; box-shadow: none !important; @@ -133,6 +154,10 @@ color: $color !important; font-size: 32px !important; font-weight: 700 !important; + + @media all and (max-width: 400px) { + font-size: 24px !important; + } } } @@ -209,6 +234,13 @@ &:last-of-type { margin-right: 18px !important; } + + > svg { + height: 34px !important; + margin-right: 16px !important; + max-width: 28px !important; + width: 28px !important; + } } /* ProtonMail FIX */ @@ -221,13 +253,6 @@ } /* ProtonMail FIX */ - svg { - height: 34px !important; - margin-right: 16px; - max-width: 28px !important; - width: 28px !important; - } - h3, p { font-family: 'Montserrat', sans-serif !important; diff --git a/src/images/notification-close.svg b/src/images/notification-close.svg new file mode 100644 index 0000000..0fbac9d --- /dev/null +++ b/src/images/notification-close.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 4f2b2890a13f51b0d612f9480a17b0817944a26e Mon Sep 17 00:00:00 2001 From: GrzegorzZajac000 Date: Wed, 3 Apr 2024 15:34:10 +0200 Subject: [PATCH 29/30] #1515 OSS Licenses --- open-source-licenses.html | 50 +++++++++++++++++++++++++++++++++++++++ open-source-licenses.json | 1 + 2 files changed, 51 insertions(+) diff --git a/open-source-licenses.html b/open-source-licenses.html index 62b37c4..5b414bd 100644 --- a/open-source-licenses.html +++ b/open-source-licenses.html @@ -1857,6 +1857,56 @@ based on: https://codepen.io/DavidKern/pen/PwzYvv @import url(https://fonts.googleapis.com/css?family=Lato:300,400,700); +body { + background: #fff; + color: #000; + font-family: 'Lato', Arial, sans-serif; +} + +h1 { + font-family: "proxima-nova",sans-serif; + letter-spacing: -0.01em; + font-weight: 700; + font-style: normal; + font-size: 60px; + margin-left: -3px; + line-height: 1em; + color: #000; + text-align: center; + margin-bottom: 8px; + text-rendering: optimizeLegibility; +} + +table { + width: 80%; + margin: auto; +} + +table, th, td { + border: 1px solid #000; + border-collapse: collapse; +} + +th { + background-color: #ddd +} + +th, td { + padding: 15px; +} + +
departmentrelated tonamelicense periodmaterial / not materiallicense typelinkremote versioninstalled versiondefined versionauthor
kesslerstuff@babel/runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.1^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuffqrcodeperpetualmaterialMITgit://github.com/soldair/node-qrcode.git1.5.31.5.3^1.5.3Ryan Day
kesslerstuffuuidperpetualmaterialMITgit+https://github.com/uuidjs/uuid.git9.0.19.0.1^9.0.0n/a
kesslerstuff@babel/coreperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/eslint-parserperpetualmaterialMIThttps://github.com/babel/babel.git7.24.17.24.1^7.23.10The Babel Team (https://babel.dev/team)
kesslerstuff@babel/plugin-transform-runtimeperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/preset-envperpetualmaterialMIThttps://github.com/babel/babel.git7.24.37.24.3^7.24.0The Babel Team (https://babel.dev/team)
kesslerstuff@babel/registerperpetualmaterialMIThttps://github.com/babel/babel.git7.23.77.23.7^7.22.15The Babel Team (https://babel.dev/team)
kesslerstuffautoprefixerperpetualmaterialMITgit+https://github.com/postcss/autoprefixer.git10.4.1910.4.19^10.4.18Andrey Sitnik
kesslerstuffbabel-loaderperpetualmaterialMIThttps://github.com/babel/babel-loader.git9.1.39.1.3^9.1.3Luis Couto
kesslerstuffbabel-plugin-transform-minify-booleansperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-minify-booleans6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-plugin-transform-remove-debuggerperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-plugin-transform-remove-debugger6.9.46.9.4^6.9.4amasad
kesslerstuffbabel-preset-minifyperpetualmaterialMIThttps://github.com/babel/minify/tree/master/packages/babel-preset-minify0.5.20.5.2^0.5.2amasad
kesslerstuffbrowserslistperpetualmaterialMITgit+https://github.com/browserslist/browserslist.git4.23.04.23.0^4.23.0Andrey Sitnik
kesslerstuffcopy-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/copy-webpack-plugin.git12.0.212.0.2^12.0.2Len Boyette
kesslerstuffcross-envperpetualmaterialMITgit+https://github.com/kentcdodds/cross-env.git7.0.37.0.3^7.0.3Kent C. Dodds (https://kentcdodds.com)
kesslerstuffcrypto-browserifyperpetualmaterialMITgit://github.com/crypto-browserify/crypto-browserify.git3.12.03.12.0^3.12.0Dominic Tarr (dominictarr.com)
kesslerstuffcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/css-loader.git6.10.06.10.0^6.10.0Tobias Koppers @sokra
kesslerstuffcss-minimizer-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/css-minimizer-webpack-plugin.git6.0.06.0.0^6.0.0Loann Neveu
kesslerstuffdotenvperpetualmaterialBSD-2-Clausegit://github.com/motdotla/dotenv.git16.4.516.4.5^16.4.5n/a
kesslerstuffdotenv-webpackperpetualmaterialMITgit+https://github.com/mrsteele/dotenv-webpack.git8.1.08.1.0^8.0.1Matt Steele (http://omnionline.us/)
kesslerstuffeslintperpetualmaterialMITgit+https://github.com/eslint/eslint.git8.57.08.57.08.57.0Nicholas C. Zakas
kesslerstuffeslint-config-standardperpetualmaterialMITgit://github.com/standard/eslint-config-standard.git17.1.017.1.0^17.1.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-friendly-formatterperpetualmaterialMITgit+https://github.com/royriojas/eslint-friendly-formatter.git4.0.14.0.1^4.0.1Roy Riojas http://royriojas.com
kesslerstuffeslint-plugin-importperpetualmaterialMITgit+https://github.com/import-js/eslint-plugin-import.git2.29.12.29.1^2.29.0Ben Mosher
kesslerstuffeslint-plugin-nperpetualmaterialMITgit+https://github.com/eslint-community/eslint-plugin-n.git16.6.216.6.2^16.6.2Toru Nagashima
kesslerstuffeslint-plugin-promiseperpetualmaterialISCgit+https://github.com/eslint-community/eslint-plugin-promise.git6.1.16.1.1^6.1.1jden
kesslerstuffeslint-plugin-standardperpetualmaterialMITgit+https://github.com/standard/eslint-plugin-standard.git5.0.05.0.0^5.0.0Feross Aboukhadijeh feross@feross.org https://feross.org
kesslerstuffeslint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/eslint-webpack-plugin.git4.1.04.1.0^4.1.0Ricardo Gobbo de Souza
kesslerstuffexports-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/exports-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstufffile-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/file-loader.git6.2.06.2.0^6.0.0Tobias Koppers @sokra
kesslerstuffhtml-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/html-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffhtml-webpack-pluginperpetualmaterialMITgit+https://github.com/jantimon/html-webpack-plugin.git5.6.05.6.0^5.5.3Jan Nicklas (https://github.com/jantimon)
kesslerstuffmini-css-extract-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/mini-css-extract-plugin.git2.8.12.8.1^2.8.1Tobias Koppers @sokra
kesslerstuffnoop-loaderperpetualmaterialISCgit+https://github.com/KnutHelland/noop-loader.git1.0.01.0.0^1.0.0Knut Helland
kesslerstuffpathperpetualmaterialMITgit://github.com/jinder/path.git0.12.70.12.7^0.12.7Joyent http://www.joyent.com
kesslerstuffpostcssperpetualmaterialMITgit+https://github.com/postcss/postcss.git8.4.388.4.38^8.4.36Andrey Sitnik
kesslerstuffpostcss-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/postcss-loader.git8.1.18.1.1^8.1.1Andrey Sitnik
kesslerstuffpostcss-sassperpetualmaterialMITgit+https://github.com/AleshaOleg/postcss-sass.git0.5.00.5.0^0.5.0Oleh Aloshkin
kesslerstuffprecssperpetualmaterialCC0-1.0git+https://github.com/jonathantneal/precss.git4.0.04.0.0^4.0.0Jonathan Neal
kesslerstuffrequire-dirperpetualmaterialMITgit://github.com/aseemk/requireDir.git1.2.01.2.0^1.2.0Aseem Kishore
kesslerstuffrimrafperpetualmaterialISCgit://github.com/isaacs/rimraf.git5.0.55.0.5^5.0.1Isaac Z. Schlueter (http://blog.izs.me/)
kesslerstuffsassperpetualmaterialMITgit+https://github.com/sass/dart-sass.git1.72.01.72.0^1.72.0Natalie Weizenbaum nweiz@google.com https://github.com/nex3
kesslerstuffsass-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/sass-loader.git14.1.114.1.1^14.1.1J. Tangelder
kesslerstuffsource-map-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/source-map-loader.git5.0.05.0.0^5.0.0Tobias Koppers @sokra
kesslerstuffstream-browserifyperpetualmaterialMITgit://github.com/browserify/stream-browserify.git3.0.03.0.0^3.0.0James Halliday mail@substack.net http://substack.net
kesslerstuffstreamifyperpetualmaterialMITgit://github.com/fent/node-streamify.git1.0.01.0.0^1.0.0fent (https://github.com/fent)
kesslerstuffstyle-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/style-loader.git3.3.43.3.4^3.3.4Tobias Koppers @sokra
kesslerstuffstylelintperpetualmaterialMITgit+https://github.com/stylelint/stylelint.git16.3.116.3.0^16.2.1stylelint
kesslerstuffstylelint-config-recommended-scssperpetualmaterialMITgit+https://github.com/stylelint-scss/stylelint-config-recommended-scss.git14.0.014.0.0^14.0.0kristerkari
kesslerstuffstylelint-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/stylelint-webpack-plugin.git5.0.05.0.0^5.0.0Ricardo Gobbo de Souza
kesslerstuffsvg-inline-loaderperpetualmaterialMITgit+ssh://git@github.com/sairion/svg-inline-loader.git0.8.20.8.2^0.8.2Jaeho Lee
kesslerstuffterser-webpack-pluginperpetualmaterialMITgit+https://github.com/webpack-contrib/terser-webpack-plugin.git5.3.105.3.10^5.3.9webpack Contrib Team
kesslerstuffurl-loaderperpetualmaterialMITgit+https://github.com/webpack-contrib/url-loader.git4.1.14.1.1^4.1.0Tobias Koppers @sokra
kesslerstuffwebextension-polyfillperpetualmaterialMPL-2.0git+https://github.com/mozilla/webextension-polyfill.git0.10.00.10.0^0.10.0Mozilla
kesslerstuffwebpackperpetualmaterialMITgit+https://github.com/webpack/webpack.git5.91.05.91.0^5.90.3Tobias Koppers @sokra
kesslerstuffwebpack-cliperpetualmaterialMITgit+https://github.com/webpack/webpack-cli.git5.1.45.1.4^5.1.4n/a
kesslerstuffwebpack-node-externalsperpetualmaterialMITgit+https://github.com/liady/webpack-node-externals.git3.0.03.0.0^3.0.0Liad Yosef https://github.com/liady
kesslerstuffwsperpetualmaterialMITgit+https://github.com/websockets/ws.git8.16.08.16.0^8.14.1Einar Otto Stangvik (http://2x.io)
kesslerstuffyarn-or-npmperpetualmaterialMITgit@github.com:camacho/yarn-or-npm.git3.0.13.0.1^3.0.1Patrick Camacho
+ + + + +