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.