From c4e746094a1c65e33e89b086c9407ecdd7ff3423 Mon Sep 17 00:00:00 2001 From: sophieeng Date: Thu, 24 Nov 2022 18:21:11 -0500 Subject: [PATCH] webpack.config converted to ECMAScript (issue #380) --- package.json | 1 + src/background/analysis/analysis.js | 4 ++-- src/background/control.js | 4 ++-- src/background/protection/protection-ff.js | 2 +- src/background/protection/protection.js | 2 +- src/background/storage.js | 2 +- src/common/editDomainlist.js | 4 ++-- src/common/editRules.js | 2 +- src/data/defaultSettings.js | 2 +- src/options/options.js | 10 +++++----- src/options/views/main-view/main-view.js | 2 +- src/options/views/settings-view/settings-view.js | 8 ++++---- src/popup/popup.js | 16 ++++++++-------- webpack.config.js | 15 ++++++++++++++- 14 files changed, 44 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index ed99ca3..6182290 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "2.0.1", "description": "A privacy extension that allows users to exercise rights under GPC", "main": "index.js", + "type": "module", "scripts": { "prestart": "rimraf dev", "start": "concurrently -k npm:start:firefox npm:start:chrome", diff --git a/src/background/analysis/analysis.js b/src/background/analysis/analysis.js index 14191b0..79c4e2f 100644 --- a/src/background/analysis/analysis.js +++ b/src/background/analysis/analysis.js @@ -42,10 +42,10 @@ import { uspPhrasing, uspCookiePhrasingList, doNotSellPhrasing, -} from "../../data/regex"; +} from "../../data/regex.js"; import psl from "psl"; import { IS_BROWSER } from "../../theme/darkmode.js"; -import { headers } from "../../data/headers"; +import { headers } from "../../data/headers.js"; /******************************************************************************/ /******************************************************************************/ diff --git a/src/background/control.js b/src/background/control.js index 625f2e3..3d428f8 100644 --- a/src/background/control.js +++ b/src/background/control.js @@ -25,13 +25,13 @@ import { import { defaultSettings } from "../data/defaultSettings.js"; import { modes } from "../data/modes.js"; import { stores, storage } from "./storage.js"; -import { reloadDynamicRules } from "../common/editRules"; +import { reloadDynamicRules } from "../common/editRules.js"; // TODO: Remove import { debug_domainlist_and_dynamicrules, updateRemovalScript, -} from "../common/editDomainlist"; +} from "../common/editDomainlist.js"; async function enable() { let mode = await storage.get(stores.settings, "MODE"); diff --git a/src/background/protection/protection-ff.js b/src/background/protection/protection-ff.js index 1af1344..51bec7a 100644 --- a/src/background/protection/protection-ff.js +++ b/src/background/protection/protection-ff.js @@ -19,7 +19,7 @@ import { initIAB } from "../cookiesIAB.js"; import { initCookiesPerDomain } from "./cookiesOnInstall.js"; import { initCookiesOnInstall } from "./cookiesOnInstall.js"; import psl from "psl"; -import { addDynamicRule, deleteDynamicRule } from "../../common/editRules"; +import { addDynamicRule, deleteDynamicRule } from "../../common/editRules.js"; /******************************************************************************/ /******************************************************************************/ diff --git a/src/background/protection/protection.js b/src/background/protection/protection.js index ab5b9f0..5fbfd34 100644 --- a/src/background/protection/protection.js +++ b/src/background/protection/protection.js @@ -25,7 +25,7 @@ import { addDynamicRule, deleteDynamicRule, reloadDynamicRules, -} from "../../common/editRules"; +} from "../../common/editRules.js"; import { updateRemovalScript } from "../../common/editDomainlist.js"; /******************************************************************************/ diff --git a/src/background/storage.js b/src/background/storage.js index 702ec3b..010c7f7 100644 --- a/src/background/storage.js +++ b/src/background/storage.js @@ -12,7 +12,7 @@ If the domainlist is being handled, then cookies are added/removed here too import { openDB } from "idb"; import { storageCookies } from "./storageCookies.js"; -import { reloadDynamicRules } from "../common/editRules"; +import { reloadDynamicRules } from "../common/editRules.js"; import { saveAs } from "file-saver"; /******************************************************************************/ diff --git a/src/common/editDomainlist.js b/src/common/editDomainlist.js index f222f13..9cf61b0 100644 --- a/src/common/editDomainlist.js +++ b/src/common/editDomainlist.js @@ -10,13 +10,13 @@ editDomainlist.js is an internal API modifying the domainlist / modifying the domainlist simultaneously with the dynamic ruleset */ -import { storage, stores } from "../background/storage"; +import { storage, stores } from "../background/storage.js"; import { deleteAllDynamicRules, deleteDynamicRule, addDynamicRule, getFreshId, -} from "./editRules"; +} from "./editRules.js"; // TODO: Migrate editRules & editDomainlist to one file diff --git a/src/common/editRules.js b/src/common/editRules.js index 865fa81..f86e870 100644 --- a/src/common/editRules.js +++ b/src/common/editRules.js @@ -3,7 +3,7 @@ Licensed per https://github.com/privacy-tech-lab/gpc-optmeowt/blob/main/LICENSE. privacy-tech-lab, https://privacytechlab.org/ */ -import { storage, stores } from "../background/storage"; +import { storage, stores } from "../background/storage.js"; /* editRules.js diff --git a/src/data/defaultSettings.js b/src/data/defaultSettings.js index 0ce0faf..f5126f3 100644 --- a/src/data/defaultSettings.js +++ b/src/data/defaultSettings.js @@ -9,7 +9,7 @@ defaultSettings.js defaultSettings.js exports the default global extension settings */ -import { modes } from "./modes"; +import { modes } from "./modes.js"; // We could also make the keys here the values of an enumerated object, but // there is less incentive to do so since it complicates the code and diff --git a/src/options/options.js b/src/options/options.js index 41d7d82..6e6b8a6 100644 --- a/src/options/options.js +++ b/src/options/options.js @@ -17,11 +17,11 @@ import "../../node_modules/animate.css/animate.min.css"; import "./styles.css"; // HTML TO JS IMPORTS - TOP OF `popup.html` -import "../../node_modules/uikit/dist/js/uikit"; -import "../../node_modules/uikit/dist/js/uikit-icons"; -import "../../node_modules/mustache/mustache"; -import "../../node_modules/@popperjs/core/dist/umd/popper"; -import "../../node_modules/tippy.js/dist/tippy-bundle.umd"; +import "../../node_modules/uikit/dist/js/uikit.js"; +import "../../node_modules/uikit/dist/js/uikit-icons.js"; +import "../../node_modules/mustache/mustache.js"; +import "../../node_modules/@popperjs/core/dist/umd/popper.js"; +import "../../node_modules/tippy.js/dist/tippy-bundle.umd.js"; /** * Intializes scripts that build the options page diff --git a/src/options/views/main-view/main-view.js b/src/options/views/main-view/main-view.js index 0a83dca..19797da 100644 --- a/src/options/views/main-view/main-view.js +++ b/src/options/views/main-view/main-view.js @@ -19,7 +19,7 @@ import { domainlistView } from "../domainlist-view/domainlist-view.js"; import { analysisView } from "../analysis-view/analysis-view.js"; import { aboutView } from "../about-view/about-view.js"; import { storage, stores } from "../../../background/storage.js"; -import Darkmode from "../../../theme/darkmode"; +import Darkmode from "../../../theme/darkmode.js"; /** * Opens the `Settings` page diff --git a/src/options/views/settings-view/settings-view.js b/src/options/views/settings-view/settings-view.js index 5e98768..6d92d50 100644 --- a/src/options/views/settings-view/settings-view.js +++ b/src/options/views/settings-view/settings-view.js @@ -18,14 +18,14 @@ import { storage, // extensionMode } from "../../../background/storage.js"; -import { csvGenerator } from "../../../common/csvGenerator"; +import { csvGenerator } from "../../../common/csvGenerator.js"; import { modes } from "../../../data/modes.js"; // Used in tutorial -import UIkit from "../../../../node_modules/uikit/dist/js/uikit"; -import tippy from "../../../../node_modules/tippy.js/dist/tippy-bundle.umd"; +import UIkit from "../../../../node_modules/uikit/dist/js/uikit.js"; +import tippy from "../../../../node_modules/tippy.js/dist/tippy-bundle.umd.js"; -import "../../../../node_modules/file-saver/src/FileSaver"; +import "../../../../node_modules/file-saver/src/FileSaver.js"; import Darkmode from "darkmode-js"; import { addDynamicRule, diff --git a/src/popup/popup.js b/src/popup/popup.js index bd8e343..9342a4b 100644 --- a/src/popup/popup.js +++ b/src/popup/popup.js @@ -9,20 +9,20 @@ popup.js popup.js supplements and renders complex elements on popup.html */ -import { stores, storage } from "../background/storage"; -import { initIAB, isValidSignalIAB } from "../background/cookiesIAB"; -import { csvGenerator } from "../common/csvGenerator"; +import { stores, storage } from "../background/storage.js"; +import { initIAB, isValidSignalIAB } from "../background/cookiesIAB.js"; +import { csvGenerator } from "../common/csvGenerator.js"; import { modes } from "../data/modes.js"; import "../../node_modules/uikit/dist/css/uikit.min.css"; import "../../node_modules/animate.css/animate.min.css"; import "./styles.css"; import psl from "psl"; -import "../../node_modules/uikit/dist/js/uikit"; -import "../../node_modules/uikit/dist/js/uikit-icons"; -import "../../node_modules/@popperjs/core/dist/umd/popper"; -import tippy from "../../node_modules/tippy.js/dist/tippy-bundle.umd"; +import "../../node_modules/uikit/dist/js/uikit.js"; +import "../../node_modules/uikit/dist/js/uikit-icons.js"; +import "../../node_modules/@popperjs/core/dist/umd/popper.js"; +import tippy from "../../node_modules/tippy.js/dist/tippy-bundle.umd.js"; import UIkit from "uikit"; -import Darkmode from "../theme/darkmode"; +import Darkmode from "../theme/darkmode.js"; import { addDomainToDomainlistAndRules, diff --git a/webpack.config.js b/webpack.config.js index 7c5970e..d25a8a0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,17 +3,30 @@ Licensed per https://github.com/privacy-tech-lab/gpc-optmeowt/blob/main/LICENSE. privacy-tech-lab, https://privacytechlab.org/ */ +/* const CopyPlugin = require("copy-webpack-plugin"); const TerserPlugin = require("terser-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const { CleanWebpackPlugin } = require("clean-webpack-plugin"); const path = require("path"); +*/ + + +import CopyPlugin from "copy-webpack-plugin"; +import TerserPlugin from "terser-webpack-plugin"; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import { CleanWebpackPlugin } from "clean-webpack-plugin"; +import path from "path"; +import { fileURLToPath } from "url"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + // ! Implement a "frontend" export in order to use a dev serve // ! Implement terser for production // ! Implement file loader for assets -module.exports = (env, argv) => { +export default (env, argv) => { const browser = env.chrome ? "chrome" : "firefox"; // default to firefox build const isProduction = argv.mode == "production"; // sets bool depending on build