feat: Enhance UserScript structure and functionality

- Updated package.json to include new scripts for development, production builds, linting, formatting, and cleaning.
- Added ESLint and Prettier for code quality and formatting.
- Refactored main application class to extend EventEmitter and manage modules.
- Introduced ExampleModule to demonstrate module structure and functionality.
- Created utility classes for DOM manipulation, event handling, and persistent storage.
- Added TypeScript definitions for UserScript environment.
- Improved TypeScript configuration with stricter checks and path aliases.
- Updated Vite configuration to handle development and production builds more effectively.
- Enhanced user script header generation to support environment-specific configurations.
This commit is contained in:
JonasPfalzgraf 2025-07-11 17:47:22 +02:00
parent 8089771d41
commit 88aeab8f29
17 changed files with 4064 additions and 595 deletions

View file

@ -1,6 +1,6 @@
import * as fs from "fs";
import pkg from "../package.json";
import config from "../header.config.json";
import pkg from "../package.json";
const targetFile = "./dist/" + pkg.name + ".user.js";
@ -60,13 +60,24 @@ function removeEmptyLinesFromString(string: string): string {
* Generates user script header
*/
async function generateUserScriptHeader() {
const excludes = generateMultipleEntries("@exclude", config.excludes);
// Determine environment from NODE_ENV or default to production
const environment = process.env.NODE_ENV === 'development' ? 'development' : 'production';
console.log(`🔧 Building UserScript header for environment: ${environment}`);
// Get environment-specific config or fallback to empty arrays
const envConfig = config.environments?.[environment] || {
includes: [],
excludes: [],
grants: []
};
const excludes = generateMultipleEntries("@exclude", envConfig.excludes);
const requires = generateMultipleEntries("@require", config.requires);
const resources = generateMultipleEntries("@resource", config.resources);
const connecters = generateMultipleEntries("@connect", config.connecters);
const grants = generateMultipleEntries("@grant", config.grants);
const grants = generateMultipleEntries("@grant", envConfig.grants);
const matches = generateMultipleEntries("@match", config.matches);
const includes = generateMultipleEntries("@match", config.includes);
const includes = generateMultipleEntries("@match", envConfig.includes);
const antifeatures = generateMultipleEntries("@antifeature", config.antifeatures);
const base64url = await buildBase64UrlFromFile(config.iconUrl);