Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
engine/assets/imports/
src/assets/imports/
File renamed without changes.
12 changes: 7 additions & 5 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions deployment/engine.json

This file was deleted.

Binary file removed deployment/engine.zip
Binary file not shown.
File renamed without changes.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand All @@ -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",
Expand Down
42 changes: 19 additions & 23 deletions scripts/import.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
13 changes: 6 additions & 7 deletions scripts/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand All @@ -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:
Expand All @@ -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)

Expand All @@ -65,17 +65,16 @@ 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)
locales_content = [
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")
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
9 changes: 3 additions & 6 deletions engine/core/main.mjs → src/core/main.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -66,10 +66,7 @@ window.SineAPI = {
manager,
};

domUtils.appendXUL(
document.head,
'<link rel="stylesheet" href="chrome://userscripts/content/engine/styles/main.css"/>'
);
domUtils.appendXUL(document.head, '<link rel="stylesheet" href="chrome://userscripts/content/styles/main.css"/>');

// Check for Sine updates.
updates.checkForUpdates();
13 changes: 6 additions & 7 deletions engine/core/manager.mjs → src/core/manager.mjs
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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) {
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -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)
);

Expand Down
File renamed without changes.
13 changes: 5 additions & 8 deletions engine/core/settings.mjs → src/core/settings.mjs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -17,10 +17,7 @@ if (ucAPI.utils.fork === "zen") {
}

// Inject settings styles and localization.
domUtils.appendXUL(
document.head,
'<link rel="stylesheet" href="chrome://userscripts/content/engine/styles/settings.css"/>'
);
domUtils.appendXUL(document.head, '<link rel="stylesheet" href="chrome://userscripts/content/styles/settings.css"/>');

domUtils.injectLocale("sine-preferences");

Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion engine/core/utils.mjs → src/core/utils.mjs
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
10 changes: 5 additions & 5 deletions engine/services/cmdPalette.js → src/services/cmdPalette.js
Original file line number Diff line number Diff line change
@@ -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)) {
Expand Down
6 changes: 3 additions & 3 deletions engine/services/injectAPI.js → src/services/injectAPI.js
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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: {},
},
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Loading
Loading