diff --git a/.prettierignore b/.prettierignore index 862add3..387c625 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1 @@ -engine/assets/imports/ \ No newline at end of file +src/assets/imports/ diff --git a/.prettierrc b/.prettierrc.json similarity index 100% rename from .prettierrc rename to .prettierrc.json diff --git a/bun.lock b/bun.lock index 4abd68f..eade56b 100644 --- a/bun.lock +++ b/bun.lock @@ -9,6 +9,7 @@ "@eslint/js": "^10.0.1", "@eslint/json": "^1.0.1", "@types/bun": "latest", + "allpm": "^1.1.4", "eslint": "^10.0.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-html": "^8.1.4", @@ -20,9 +21,6 @@ "lint-staged": "^16.3.2", "prettier": "^3.8.1", }, - "peerDependencies": { - "typescript": "^5", - }, }, }, "packages": { @@ -74,6 +72,8 @@ "ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "3.1.3", "fast-json-stable-stringify": "2.1.0", "json-schema-traverse": "0.4.1", "uri-js": "4.4.1" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], + "allpm": ["allpm@1.1.4", "", { "dependencies": { "cross-spawn": "^7.0.6", "package-directory": "^8.2.0" }, "bin": { "allpm": "dist/bin/index.js" } }, "sha512-UCKHsM9Hbp8QX2dJlj7HaBnoYh3IeVpeQOxUY5MvkEj2z1QWdwj3kiR6YWLJWTxGmZECvX1++Hv+wWnk8IDjyg=="], + "ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "1.1.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="], "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], @@ -158,6 +158,8 @@ "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "6.0.0", "path-exists": "4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + "find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="], + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "3.3.4", "keyv": "4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], "flatted": ["flatted@3.3.4", "", {}, "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA=="], @@ -228,6 +230,8 @@ "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "3.1.0" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + "package-directory": ["package-directory@8.2.0", "", { "dependencies": { "find-up-simple": "^1.0.0" } }, "sha512-qJSu5Mo6tHmRxCy2KCYYKYgcfBdUpy9dwReaZD/xwf608AUk/MoRtIOWzgDtUeGeC7n/55yC3MI1Q+MbSoektw=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], @@ -266,8 +270,6 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], diff --git a/deployment/engine.json b/deployment/engine.json deleted file mode 100644 index 168e49a..0000000 --- a/deployment/engine.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "updatedAt": "2026-02-15 22:52", - "version": "2.2.3", - "package": "https://raw.githubusercontent.com/CosmoCreeper/Sine/cosine/deployment/engine.zip" -} diff --git a/deployment/engine.zip b/deployment/engine.zip deleted file mode 100644 index 5f783eb..0000000 Binary files a/deployment/engine.zip and /dev/null differ diff --git a/eslint.config.js b/eslint.config.mjs similarity index 100% rename from eslint.config.js rename to eslint.config.mjs diff --git a/package.json b/package.json index fb11aa2..c40af10 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,11 @@ "scripts": { "import": "python3 scripts/import.py", "package": "python3 scripts/package.py", - "lint": "bunx eslint engine/ sine.sys.mjs && prettier . --check --cache", + "lint": "eslint . && prettier . --check --cache", + "lint:fix": "eslint . --fix && allpm run pretty", "pretty": "prettier . --write" }, "type": "module", - "keywords": [], "author": "CosmoCreeper", "license": "GPL-3.0-only", "lint-staged": { @@ -27,6 +27,7 @@ "@eslint/js": "^10.0.1", "@eslint/json": "^1.0.1", "@types/bun": "latest", + "allpm": "^1.1.4", "eslint": "^10.0.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-html": "^8.1.4", diff --git a/scripts/import.py b/scripts/import.py index e286df7..262b75c 100644 --- a/scripts/import.py +++ b/scripts/import.py @@ -24,12 +24,11 @@ print("=" * 25) # Source paths -engine_src = sine_utils.source_dir / "engine" -sine_src = sine_utils.source_dir / "sine.sys.mjs" +sine_src = sine_utils.source_dir / "src" json_src = sine_utils.source_dir / "engine.json" locales_src = sine_utils.source_dir / "locales" -contents_to_copy = [sine_src, engine_src, json_src] +contents_to_copy = [sine_src, json_src] sine_utils.verify_content(contents_to_copy) # Destination paths @@ -63,31 +62,28 @@ def import_engine(): # Ensure destination exists destination_dir.mkdir(parents=True, exist_ok=True) - # Copy engine + sine.sys.mjs into JS/ - for item in contents_to_copy: - destination = destination_dir / item.name + # Copy src folder first to prevent overwriting the json file + if sine_src.exists(): + shutil.rmtree(destination_dir) - if destination.exists(): - if destination.is_file(): - destination.unlink() - else: - shutil.rmtree(destination) + shutil.copytree(sine_src, destination_dir) - if item.is_file(): - if item.parts[-1].endswith(".json"): - with open(item, "r", encoding="utf-8") as f: - data = json.load(f) + # Copy engine.json into JS last + json_dest = destination_dir / json_src.name - with open(destination, "w", encoding="utf-8") as f: - json.dump(data["updates"][0], f, indent=2) - else: - shutil.copy2(item, destination) - else: - shutil.copytree(item, destination) + if json_dest.exists(): + json_dest.unlink() - log(f"Copied {item.name} to {sine_utils.censor(destination)}") + with open(json_src, "r", encoding="utf-8") as f: + data = json.load(f) + + with open(json_dest, "w", encoding="utf-8") as f: + print(data["updates"][0], f) + json.dump(data["updates"][0], f, indent=2) + + log(f"Copied engine data to {sine_utils.censor(destination_dir)}") - # Copy locales one directory ABOVE JS/ + # Copy locales to chrome folder if locales_src.exists(): if locales_dst.exists(): shutil.rmtree(locales_dst) diff --git a/scripts/package.py b/scripts/package.py index a3c12e4..ed6612a 100644 --- a/scripts/package.py +++ b/scripts/package.py @@ -17,7 +17,7 @@ def log(msg): sine_utils.log(start_time, msg) -def package_zip(output_zip, zip_content, top_level_folder=None): +def package_zip(output_zip, zip_content, top_level_folder): sine_utils.verify_content(zip_content) if output_zip.exists(): @@ -32,7 +32,7 @@ def package_zip(output_zip, zip_content, top_level_folder=None): for file in files: file_path = Path(root) / file # Make the path inside the zip - rel_path = file_path.relative_to(sine_utils.source_dir) + rel_path = file_path.relative_to(item) if top_level_folder: arcname = Path(top_level_folder) / rel_path else: @@ -49,7 +49,7 @@ def package_zip(output_zip, zip_content, top_level_folder=None): with open(item, "r", encoding="utf-8") as f: data = json.load(f) - item = sine_utils.source_dir / "update.json" + item = sine_utils.source_dir / "engine.json" with open(item, "w", encoding="utf-8") as f: json.dump(data["updates"][0], f, indent=2) @@ -65,12 +65,11 @@ def package_zip(output_zip, zip_content, top_level_folder=None): log(f"Error creating zip file: {e}") engine_content = [ - sine_utils.source_dir / "sine.sys.mjs", - sine_utils.source_dir / "engine", + sine_utils.source_dir / "src", sine_utils.source_dir / "engine.json" ] engine_location = sine_utils.source_dir / "engine.zip" -package_zip(engine_location, engine_content, top_level_folder="JS") +package_zip(engine_location, engine_content, "JS") print("\nPackaging locales...") print("=" * 25) @@ -78,4 +77,4 @@ def package_zip(output_zip, zip_content, top_level_folder=None): sine_utils.source_dir / "locales" ] locales_location = sine_utils.source_dir / "locales.zip" -package_zip(locales_location, locales_content) +package_zip(locales_location, locales_content, "locales") diff --git a/engine/actors/MarketplaceChild.sys.mjs b/src/actors/MarketplaceChild.sys.mjs similarity index 99% rename from engine/actors/MarketplaceChild.sys.mjs rename to src/actors/MarketplaceChild.sys.mjs index a338973..5d54500 100644 --- a/engine/actors/MarketplaceChild.sys.mjs +++ b/src/actors/MarketplaceChild.sys.mjs @@ -2,7 +2,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -// => engine/actors/MarketplaceChild.sys.mjs +// => actors/MarketplaceChild.sys.mjs // =========================================================== // This module interacts with the site in the JS Window Actor // for the Zen Mods site. diff --git a/engine/actors/MarketplaceParent.sys.mjs b/src/actors/MarketplaceParent.sys.mjs similarity index 97% rename from engine/actors/MarketplaceParent.sys.mjs rename to src/actors/MarketplaceParent.sys.mjs index b0cd7fe..b590901 100644 --- a/engine/actors/MarketplaceParent.sys.mjs +++ b/src/actors/MarketplaceParent.sys.mjs @@ -2,7 +2,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -// => engine/actors/MarketplaceParent.sys.mjs +// => actors/MarketplaceParent.sys.mjs // =========================================================== // This module allows the JS Window Actor for the Zen Mods // site to interact with global variables. diff --git a/engine/assets/images/check.svg b/src/assets/images/check.svg similarity index 100% rename from engine/assets/images/check.svg rename to src/assets/images/check.svg diff --git a/engine/assets/images/github.svg b/src/assets/images/github.svg similarity index 100% rename from engine/assets/images/github.svg rename to src/assets/images/github.svg diff --git a/engine/assets/images/home.svg b/src/assets/images/home.svg similarity index 100% rename from engine/assets/images/home.svg rename to src/assets/images/home.svg diff --git a/engine/assets/images/markdown.svg b/src/assets/images/markdown.svg similarity index 100% rename from engine/assets/images/markdown.svg rename to src/assets/images/markdown.svg diff --git a/engine/assets/images/refresh.svg b/src/assets/images/refresh.svg similarity index 100% rename from engine/assets/images/refresh.svg rename to src/assets/images/refresh.svg diff --git a/engine/assets/images/saturn.svg b/src/assets/images/saturn.svg similarity index 100% rename from engine/assets/images/saturn.svg rename to src/assets/images/saturn.svg diff --git a/engine/assets/images/settings.svg b/src/assets/images/settings.svg similarity index 100% rename from engine/assets/images/settings.svg rename to src/assets/images/settings.svg diff --git a/engine/assets/images/update-disabled.svg b/src/assets/images/update-disabled.svg similarity index 100% rename from engine/assets/images/update-disabled.svg rename to src/assets/images/update-disabled.svg diff --git a/engine/assets/images/update.svg b/src/assets/images/update.svg similarity index 100% rename from engine/assets/images/update.svg rename to src/assets/images/update.svg diff --git a/engine/assets/images/web.svg b/src/assets/images/web.svg similarity index 100% rename from engine/assets/images/web.svg rename to src/assets/images/web.svg diff --git a/engine/assets/imports/marked_parser.js b/src/assets/imports/marked_parser.js similarity index 100% rename from engine/assets/imports/marked_parser.js rename to src/assets/imports/marked_parser.js diff --git a/engine/assets/imports/marked_styles.css b/src/assets/imports/marked_styles.css similarity index 100% rename from engine/assets/imports/marked_styles.css rename to src/assets/imports/marked_styles.css diff --git a/engine/core/main.mjs b/src/core/main.mjs similarity index 90% rename from engine/core/main.mjs rename to src/core/main.mjs index e242aa2..2abd481 100644 --- a/engine/core/main.mjs +++ b/src/core/main.mjs @@ -10,8 +10,8 @@ domUtils.injectLocale("sine-toasts"); injectCmdPalette(); -const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/engine/utils/uc_api.sys.mjs").default; -const utils = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/utils.mjs").default; +const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/utils/uc_api.sys.mjs").default; +const utils = ChromeUtils.importESModule("chrome://userscripts/content/core/utils.mjs").default; const manager = window.manager; delete window.manager; @@ -66,10 +66,7 @@ window.SineAPI = { manager, }; -domUtils.appendXUL( - document.head, - '' -); +domUtils.appendXUL(document.head, ''); // Check for Sine updates. updates.checkForUpdates(); diff --git a/engine/core/manager.mjs b/src/core/manager.mjs similarity index 99% rename from engine/core/manager.mjs rename to src/core/manager.mjs index ee2b426..a2be134 100644 --- a/engine/core/manager.mjs +++ b/src/core/manager.mjs @@ -1,4 +1,4 @@ -// => engine/utils/manager.mjs +// => core/manager.mjs // =========================================================== // This module manages mods and themes, allowing Sine to // enable, disable, and remove them. @@ -9,9 +9,8 @@ import domUtils from "../utils/dom.mjs"; import ucAPI from "../utils/uc_api.sys.mjs"; class Manager { - marketplace = ChromeUtils.importESModule("chrome://userscripts/content/engine/services/marketplace.mjs").default; - #stylesheetManager = ChromeUtils.importESModule("chrome://userscripts/content/engine/services/stylesheets.mjs") - .default; + marketplace = ChromeUtils.importESModule("chrome://userscripts/content/services/marketplace.mjs").default; + #stylesheetManager = ChromeUtils.importESModule("chrome://userscripts/content/services/stylesheets.mjs").default; #unloadListeners = {}; addUnloadListener(script, window, callback) { @@ -78,7 +77,7 @@ class Manager { let script = Components.stack.caller?.filename.split("?")[0]; // Only allow custom script paths if it's from a trusted file. - if (script === "chrome://userscripts/content/engine/services/module_loader.mjs") { + if (script === "chrome://userscripts/content/services/module_loader.mjs") { script = scriptPath; } @@ -147,7 +146,7 @@ class Manager { for (const process of processes) { this.appendInterfaceToDOM(process); - ChromeUtils.compileScript("chrome://userscripts/content/engine/services/module_loader.mjs") + ChromeUtils.compileScript("chrome://userscripts/content/services/module_loader.mjs") .then((script) => script.executeInGlobal(process)) .catch((err) => console.warn("[Sine]: Failed to load module script:", err)); @@ -188,7 +187,7 @@ class Manager { this.appendInterfaceToDOM(window); window.newDOM = true; - ChromeUtils.compileScript("chrome://userscripts/content/engine/services/module_loader.mjs").then((script) => + ChromeUtils.compileScript("chrome://userscripts/content/services/module_loader.mjs").then((script) => script.executeInGlobal(window) ); diff --git a/engine/core/settings.json b/src/core/settings.json similarity index 100% rename from engine/core/settings.json rename to src/core/settings.json diff --git a/engine/core/settings.mjs b/src/core/settings.mjs similarity index 97% rename from engine/core/settings.mjs rename to src/core/settings.mjs index bda1656..150e97e 100644 --- a/engine/core/settings.mjs +++ b/src/core/settings.mjs @@ -1,11 +1,11 @@ console.log("[Sine]: Executing settings process..."); -import domUtils from "chrome://userscripts/content/engine/utils/dom.mjs"; +import domUtils from "chrome://userscripts/content/utils/dom.mjs"; import injectCmdPalette from "../services/cmdPalette.js"; import updates from "../services/updates.js"; -const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/engine/utils/uc_api.sys.mjs").default; -const utils = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/utils.mjs").default; +const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/utils/uc_api.sys.mjs").default; +const utils = ChromeUtils.importESModule("chrome://userscripts/content/core/utils.mjs").default; const manager = window.manager; delete window.manager; @@ -17,10 +17,7 @@ if (ucAPI.utils.fork === "zen") { } // Inject settings styles and localization. -domUtils.appendXUL( - document.head, - '' -); +domUtils.appendXUL(document.head, ''); domUtils.injectLocale("sine-preferences"); @@ -168,7 +165,7 @@ newSettingsDialog.querySelector("button").addEventListener("click", () => newSet let sineSettingsLoaded = false; const loadPrefs = async () => { await updates.init(); - const settingPrefs = await IOUtils.readJSON(PathUtils.join(utils.jsDir, "engine", "core", "settings.json")); + const settingPrefs = await IOUtils.readJSON(PathUtils.join(utils.jsDir, "core", "settings.json")); for (const pref of settingPrefs) { if (pref.l10n) { pref.label = await document.l10n.formatValue(pref.l10n); diff --git a/engine/core/utils.mjs b/src/core/utils.mjs similarity index 99% rename from engine/core/utils.mjs rename to src/core/utils.mjs index b232403..f1eda91 100644 --- a/engine/core/utils.mjs +++ b/src/core/utils.mjs @@ -1,4 +1,4 @@ -// => engine/utils/utils.mjs +// => core/utils.mjs // =========================================================== // This module provides data so that Sine can easily know // where to look and perform actions. diff --git a/engine/services/cmdPalette.js b/src/services/cmdPalette.js similarity index 95% rename from engine/services/cmdPalette.js rename to src/services/cmdPalette.js index 2b9c287..483094a 100644 --- a/engine/services/cmdPalette.js +++ b/src/services/cmdPalette.js @@ -1,14 +1,14 @@ -// => engine/plugins/cmdPalette.js +// => services/cmdPalette.js // =========================================================== -// This plugin allows developers to have an easy-to-use +// This service allows developers to have an easy-to-use // command palette for making themes. // =========================================================== import domUtils from "../utils/dom.mjs"; -const manager = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/manager.mjs").default; -const utils = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/utils.mjs").default; -const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/engine/utils/uc_api.sys.mjs").default; +const manager = ChromeUtils.importESModule("chrome://userscripts/content/core/manager.mjs").default; +const utils = ChromeUtils.importESModule("chrome://userscripts/content/core/utils.mjs").default; +const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/utils/uc_api.sys.mjs").default; export default () => { if (Services.prefs.getBoolPref("sine.enable-dev", false)) { diff --git a/engine/services/injectAPI.js b/src/services/injectAPI.js similarity index 73% rename from engine/services/injectAPI.js rename to src/services/injectAPI.js index 376b03c..8fc1028 100644 --- a/engine/services/injectAPI.js +++ b/src/services/injectAPI.js @@ -1,4 +1,4 @@ -// => engine/injectAPI.js +// => services/injectAPI.js // =========================================================== // This module allows the script to inject an API for // installing mods through the Zen Mods store. @@ -7,10 +7,10 @@ try { ChromeUtils.registerWindowActor("SineModsMarketplace", { parent: { - esModuleURI: "chrome://userscripts/content/engine/actors/MarketplaceParent.sys.mjs", + esModuleURI: "chrome://userscripts/content/actors/MarketplaceParent.sys.mjs", }, child: { - esModuleURI: "chrome://userscripts/content/engine/actors/MarketplaceChild.sys.mjs", + esModuleURI: "chrome://userscripts/content/actors/MarketplaceChild.sys.mjs", events: { DOMContentLoaded: {}, }, diff --git a/engine/services/marketplace.mjs b/src/services/marketplace.mjs similarity index 100% rename from engine/services/marketplace.mjs rename to src/services/marketplace.mjs diff --git a/engine/services/module_loader.mjs b/src/services/module_loader.mjs similarity index 91% rename from engine/services/module_loader.mjs rename to src/services/module_loader.mjs index e5a6f35..bf36ff5 100644 --- a/engine/services/module_loader.mjs +++ b/src/services/module_loader.mjs @@ -13,13 +13,13 @@ }[window.location.pathname]; if (scriptName && window.newDOM) { - importScript("chrome://userscripts/content/engine/core/" + scriptName); + importScript("chrome://userscripts/content/core/" + scriptName); } delete window.newDOM; const executeUserScripts = async () => { - const utils = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/utils.mjs").default; + const utils = ChromeUtils.importESModule("chrome://userscripts/content/core/utils.mjs").default; const scripts = await utils.getScripts({ removeBgModules: true, href: window.location.href, diff --git a/engine/services/stylesheets.mjs b/src/services/stylesheets.mjs similarity index 99% rename from engine/services/stylesheets.mjs rename to src/services/stylesheets.mjs index a2e2151..b8f841a 100644 --- a/engine/services/stylesheets.mjs +++ b/src/services/stylesheets.mjs @@ -1,4 +1,4 @@ -// => engine/services/stylesheets.mjs +// => services/stylesheets.mjs // =========================================================== // This module manages stylesheets for mods and themes, // applying them to the browser and content as needed. diff --git a/engine/services/updates.js b/src/services/updates.js similarity index 97% rename from engine/services/updates.js rename to src/services/updates.js index 351ee21..493f762 100644 --- a/engine/services/updates.js +++ b/src/services/updates.js @@ -1,11 +1,11 @@ -// => engine/services/updates.js +// => services/updates.js // =========================================================== // This module allows Sine to update itself, removing the // need for the user to reinstall Sine. // =========================================================== -const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/engine/utils/uc_api.sys.mjs").default; -const utils = ChromeUtils.importESModule("chrome://userscripts/content/engine/core/utils.mjs").default; +const ucAPI = ChromeUtils.importESModule("chrome://userscripts/content/utils/uc_api.sys.mjs").default; +const utils = ChromeUtils.importESModule("chrome://userscripts/content/core/utils.mjs").default; export default { dataFile: PathUtils.join(utils.jsDir, "engine.json"), diff --git a/sine.sys.mjs b/src/sine.sys.mjs similarity index 92% rename from sine.sys.mjs rename to src/sine.sys.mjs index 65a27b0..fb37bd0 100644 --- a/sine.sys.mjs +++ b/src/sine.sys.mjs @@ -5,9 +5,9 @@ */ // Engine imports. -import utils from "./engine/core/utils.mjs"; -import manager from "./engine/core/manager.mjs"; -import ucAPI from "./engine/utils/uc_api.sys.mjs"; +import utils from "./core/utils.mjs"; +import manager from "./core/manager.mjs"; +import ucAPI from "./utils/uc_api.sys.mjs"; console.log(`${utils.brand.charAt(0).toUpperCase() + utils.brand.slice(1)} is active!`); @@ -75,7 +75,7 @@ const Sine = { manager.updateMods("auto"); // Inject https://zen-browser.app/mods/ API. - import("./engine/services/injectAPI.js"); + import("./services/injectAPI.js"); }, }; diff --git a/engine/styles/main.css b/src/styles/main.css similarity index 78% rename from engine/styles/main.css rename to src/styles/main.css index d35acb4..3351488 100644 --- a/engine/styles/main.css +++ b/src/styles/main.css @@ -1,10 +1,5 @@ /* - * ╔══════════════════════════════════════════════════════════╗ - * ║ engine/styles/main.css ║ - * ╠══════════════════════════════════════════════════════════╣ - * ║ This module contains styling for Sine in the main ║ - * ║ process. ║ - * ╚══════════════════════════════════════════════════════════╝ + * Styling for Sine in the browser window. */ .sineCommandPalette { diff --git a/engine/styles/settings.css b/src/styles/settings.css similarity index 86% rename from engine/styles/settings.css rename to src/styles/settings.css index 70f05d9..e004fdb 100644 --- a/engine/styles/settings.css +++ b/src/styles/settings.css @@ -1,14 +1,9 @@ /* - * ╔══════════════════════════════════════════════════════════╗ - * ║ engine/styles/settings.css ║ - * ╠══════════════════════════════════════════════════════════╣ - * ║ This module contains styling for Sine in the settings ║ - * ║ process. ║ - * ╚══════════════════════════════════════════════════════════╝ + * Styling for Sine in the settings window. */ #category-sine-mods .category-icon { - list-style-image: url("chrome://userscripts/content/engine/assets/images/saturn.svg"); + list-style-image: url("chrome://userscripts/content/assets/images/saturn.svg"); } #sineInstalledGroup, @@ -94,23 +89,23 @@ } #sineMarketplaceRefreshButton { - background-image: url("chrome://userscripts/content/engine/assets/images/refresh.svg"); + background-image: url("chrome://userscripts/content/assets/images/refresh.svg"); background-size: 100%; } .sineMarketplaceButtonContainer .sineMarketplaceOpenButton { - background-image: url("chrome://userscripts/content/engine/assets/images/markdown.svg"); + background-image: url("chrome://userscripts/content/assets/images/markdown.svg"); } #sineInstallationCustom .sineMarketplaceOpenButton:not(.sineItemConfigureButton) { - background-image: url("chrome://userscripts/content/engine/assets/images/web.svg"); + background-image: url("chrome://userscripts/content/assets/images/web.svg"); } .github-link { min-width: 0; height: 34.833px; width: 38.833px; - background-image: url("chrome://userscripts/content/engine/assets/images/github.svg"); + background-image: url("chrome://userscripts/content/assets/images/github.svg"); } .sineItemPreferenceDialogContent .update-indicator { @@ -356,7 +351,7 @@ dialog[open] { display: flex; &::before { - background-image: url("chrome://userscripts/content/engine/assets/images/update.svg"); + background-image: url("chrome://userscripts/content/assets/images/update.svg"); background-repeat: no-repeat; } @@ -374,7 +369,7 @@ dialog[open] { display: flex; &::before { - background-image: url("chrome://userscripts/content/engine/assets/images/update-disabled.svg"); + background-image: url("chrome://userscripts/content/assets/images/update-disabled.svg"); } } @@ -417,7 +412,7 @@ dialog[open] { content: ""; width: 16px; height: 16px; - background-image: url("chrome://userscripts/content/engine/assets/images/check.svg"); + background-image: url("chrome://userscripts/content/assets/images/check.svg"); background-repeat: no-repeat; align-self: center; } @@ -535,11 +530,11 @@ dialog[open] { } .sineItemConfigureButton { - background-image: url("chrome://userscripts/content/engine/assets/images/settings.svg"); + background-image: url("chrome://userscripts/content/assets/images/settings.svg"); } .sineItemHomepageButton { - background-image: url("chrome://userscripts/content/engine/assets/images/home.svg"); + background-image: url("chrome://userscripts/content/assets/images/home.svg"); } .sineItemConfigureButton, diff --git a/engine/utils/dom.mjs b/src/utils/dom.mjs similarity index 93% rename from engine/utils/dom.mjs rename to src/utils/dom.mjs index fb582a8..4ede842 100644 --- a/engine/utils/dom.mjs +++ b/src/utils/dom.mjs @@ -5,15 +5,14 @@ const parseMD = (element, markdown, relativeURL, windowObj = window) => { const link = document.createElement("link"); link.rel = "stylesheet"; link.className = "marked-styles"; - link.href = "chrome://userscripts/content/engine/assets/imports/marked_styles.css"; + link.href = "chrome://userscripts/content/assets/imports/marked_styles.css"; document.head.appendChild(link); } if (!windowObj.marked) { - Services.scriptloader.loadSubScriptWithOptions( - "chrome://userscripts/content/engine/assets/imports/marked_parser.js", - { target: windowObj } - ); + Services.scriptloader.loadSubScriptWithOptions("chrome://userscripts/content/assets/imports/marked_parser.js", { + target: windowObj, + }); } const renderer = new windowObj.marked.Renderer(); diff --git a/engine/utils/toasts.mjs b/src/utils/toasts.mjs similarity index 99% rename from engine/utils/toasts.mjs rename to src/utils/toasts.mjs index 55fd8ba..6321992 100644 --- a/engine/utils/toasts.mjs +++ b/src/utils/toasts.mjs @@ -1,4 +1,4 @@ -// => engine/utils/toasts.mjs +// => utils/toasts.mjs // =========================================================== // This module contains the basic logic behind toast // implementation, used in uc_api.sys.mjs. diff --git a/engine/utils/uc_api.sys.mjs b/src/utils/uc_api.sys.mjs similarity index 99% rename from engine/utils/uc_api.sys.mjs rename to src/utils/uc_api.sys.mjs index 9e7a0a5..995546c 100644 --- a/engine/utils/uc_api.sys.mjs +++ b/src/utils/uc_api.sys.mjs @@ -1,4 +1,4 @@ -// => engine/utils/uc_api.sys.mjs +// => utils/uc_api.sys.mjs // =========================================================== // This module adds convenience functions for performing // generic tasks unrelated to mod management.