refactor: Overhaul Plugin Architecture & Playground UI (#1846)

* refactor: Move Plugins Out and Consolidate with Multisrc

* feat: Overhaul Playground UI

* feat: Add Filters to New UI

* feat: Persist Selected Plugin

* feat: Add Direct Parse Novel/Chapter Options and Feedback Toasts

[skip ci]

* feat: UX Improvements

* chore: Update Plugin Path in Publish Workflow

* fix: Add Backward Compatibility

* chore: Update Plugin Publishing Script
This commit is contained in:
Rajarshee Chatterjee
2025-10-20 22:54:08 +05:30
committed by GitHub
parent 252beff0bf
commit 20c2b75b01
363 changed files with 6848 additions and 3007 deletions
+42
View File
@@ -0,0 +1,42 @@
import list from './sources.json' with { type: 'json' };
import { readFileSync } from 'fs';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
export const generateAll = function () {
list.sort((a, b) => a.id.length - b.id.length);
return list.map(source => {
try {
const filters = JSON.parse(
readFileSync(`${__dirname}/filters/mtlnovel.json`, 'utf-8'),
);
source.filters = filters;
} catch (e) {}
console.log(
`[mtlnovel] Generating: ${source.id}`.padEnd(35),
source.filters ? '🔎with filters🔍' : '🚫 no filters 🚫',
);
return generator(source);
});
};
const generator = function generator(source) {
const MTLNovelTemplate = readFileSync(__dirname + '/template.ts', {
encoding: 'utf-8',
});
const pluginScript = `
${MTLNovelTemplate}
const plugin = new MTLNovelPlugin(${JSON.stringify(source)});
export default plugin;
`.trim();
return {
lang: source.options?.lang || 'English',
filename: source.sourceName,
pluginScript,
};
};