* add prettier

* lint-staged

* prettier

* upgrade husky
This commit is contained in:
nyagami
2024-03-23 22:00:29 +07:00
committed by GitHub
parent c22979b10f
commit 5f9a067ab9
113 changed files with 79244 additions and 50841 deletions
+68 -70
View File
@@ -1,100 +1,98 @@
import fs from "fs";
import { languages } from "@libs/languages";
import path from "path";
import { PluginList } from "@typings/types";
import { Plugin } from "@typings/plugin";
import { Filters } from "@libs/filterInputs";
const root = path.dirname(require?.main?.filename || "");
import fs from 'fs';
import { languages } from '@libs/languages';
import path from 'path';
import { PluginList } from '@typings/types';
import { Plugin } from '@typings/plugin';
import { Filters } from '@libs/filterInputs';
const root = path.dirname(require?.main?.filename || '');
export const fetchHeaders: Record<string, string> = {};
export const all_plugins = (): PluginList => {
const res: PluginList = {};
for (let languageEnglish in languages) {
//language with English name
const languageNative =
languages[languageEnglish as keyof typeof languages];
const langPath = path.join(
root,
"plugins",
languageEnglish.toLowerCase()
);
if (!fs.existsSync(langPath)) continue;
const plugins = fs.readdirSync(langPath);
res[languageEnglish] = [];
plugins.forEach((plugin) => {
if (plugin.startsWith(".")) return;
const requirePath = `@plugins/${languageEnglish.toLowerCase()}/${
plugin.split(".")[0]
}`;
const instance = require(requirePath).default;
const { id, name, version, icon } = instance;
const info: Plugin.PluginItem = {
id,
name: name + (plugin.match(/(\[.+\])/)?.[1] || ''),
lang: languageNative,
version,
requirePath,
icon,
}; // lang: language with native name
res[languageEnglish].push(info);
});
}
return res;
const res: PluginList = {};
for (let languageEnglish in languages) {
//language with English name
const languageNative = languages[languageEnglish as keyof typeof languages];
const langPath = path.join(root, 'plugins', languageEnglish.toLowerCase());
if (!fs.existsSync(langPath)) continue;
const plugins = fs.readdirSync(langPath);
res[languageEnglish] = [];
plugins.forEach(plugin => {
if (plugin.startsWith('.')) return;
const requirePath = `@plugins/${languageEnglish.toLowerCase()}/${
plugin.split('.')[0]
}`;
const instance = require(requirePath).default;
const { id, name, version, icon } = instance;
const info: Plugin.PluginItem = {
id,
name: name + (plugin.match(/(\[.+\])/)?.[1] || ''),
lang: languageNative,
version,
requirePath,
icon,
}; // lang: language with native name
res[languageEnglish].push(info);
});
}
return res;
};
const getPlugin = async (
requirePath: string
requirePath: string,
): Promise<Plugin.PluginBase | Plugin.PagePlugin | null> => {
const plugin = await require(requirePath).default;
return plugin;
const plugin = await require(requirePath).default;
return plugin;
};
export const getFilter = async (pluginRequirePath: string) =>
(await getPlugin(pluginRequirePath))?.filters;
(await getPlugin(pluginRequirePath))?.filters;
export const popularNovels = async (
pluginRequirePath: string,
page: number,
options: Plugin.PopularNovelsOptions<Filters>
pluginRequirePath: string,
page: number,
options: Plugin.PopularNovelsOptions<Filters>,
) => (await getPlugin(pluginRequirePath))?.popularNovels(page, options);
export const searchNovels = async (
pluginRequirePath: string,
page: number,
searchTerm: string
pluginRequirePath: string,
page: number,
searchTerm: string,
) => (await getPlugin(pluginRequirePath))?.searchNovels(searchTerm, page);
export const parseNovel = async (
pluginRequirePath: string,
novelPath: string
pluginRequirePath: string,
novelPath: string,
) => (await getPlugin(pluginRequirePath))?.parseNovel(novelPath);
export const hasParsePage = async (
pluginRequirePath: string,
) => (await getPlugin(pluginRequirePath) as Plugin.PagePlugin | null)?.parsePage;
export const hasParsePage = async (pluginRequirePath: string) =>
((await getPlugin(pluginRequirePath)) as Plugin.PagePlugin | null)?.parsePage;
export const parsePage = async(
pluginRequirePath: string,
novelPath: string,
page: string
) => (await getPlugin(pluginRequirePath) as Plugin.PagePlugin | null)?.parsePage(novelPath, page);
export const parsePage = async (
pluginRequirePath: string,
novelPath: string,
page: string,
) =>
((await getPlugin(pluginRequirePath)) as Plugin.PagePlugin | null)?.parsePage(
novelPath,
page,
);
export const parseChapter = async (
pluginRequirePath: string,
chapterPath: string
pluginRequirePath: string,
chapterPath: string,
) => (await getPlugin(pluginRequirePath))?.parseChapter(chapterPath);
export const fetchImage = async (pluginRequirePath: string, url: string) =>
(await getPlugin(pluginRequirePath))?.fetchImage(url);
(await getPlugin(pluginRequirePath))?.fetchImage(url);
export const resolveUrl = async (
pluginRequirePath: string,
path: string,
isNovel?: boolean,
pluginRequirePath: string,
path: string,
isNovel?: boolean,
) => {
const plugin = await getPlugin(pluginRequirePath);
if (!plugin) return path;
if (plugin.resolveUrl) return plugin.resolveUrl(path, isNovel);
return plugin.site + path;
};
const plugin = await getPlugin(pluginRequirePath);
if (!plugin) return path;
if (plugin.resolveUrl) return plugin.resolveUrl(path, isNovel);
return plugin.site + path;
};