feat: typescript part 1

Co-authored-by: Su-Yong <simssy2205@gmail.com>
This commit is contained in:
JellyBrick
2023-09-03 00:25:48 +09:00
parent 3e3fdb3c3f
commit 82bcadcd64
57 changed files with 3958 additions and 968 deletions

View File

@ -1,13 +0,0 @@
const { loadAdBlockerEngine } = require('./blocker');
const config = require('./config');
module.exports = async (win, options) => {
if (await config.shouldUseBlocklists()) {
loadAdBlockerEngine(
win.webContents.session,
options.cache,
options.additionalBlockLists,
options.disableDefaultLists,
);
}
};

20
plugins/adblocker/back.ts Normal file
View File

@ -0,0 +1,20 @@
import { BrowserWindow } from 'electron';
import { loadAdBlockerEngine } from './blocker';
import config from './config';
import pluginConfig from '../../config';
const AdBlockOptionsObj = pluginConfig.get('plugins.adblocker');
type AdBlockOptions = typeof AdBlockOptionsObj;
export default async (win: BrowserWindow, options: AdBlockOptions) => {
if (await config.shouldUseBlocklists()) {
loadAdBlockerEngine(
win.webContents.session,
options.cache,
options.additionalBlockLists,
options.disableDefaultLists,
);
}
};

View File

@ -1,7 +1,8 @@
const { promises } = require('node:fs'); // Used for caching
const path = require('node:path');
// Used for caching
import path from 'node:path';
import { promises } from 'node:fs';
const { ElectronBlocker } = require('@cliqz/adblocker-electron');
import { ElectronBlocker } from '@cliqz/adblocker-electron';
const SOURCES = [
'https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt',
@ -15,11 +16,11 @@ const SOURCES = [
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
];
const loadAdBlockerEngine = (
session = undefined,
export const loadAdBlockerEngine = (
session: Electron.Session | undefined = undefined,
cache = true,
additionalBlockLists = [],
disableDefaultLists = false,
disableDefaultLists: boolean | string[] = false,
) => {
// Only use cache if no additional blocklists are passed
const cachingOptions
@ -56,7 +57,7 @@ const loadAdBlockerEngine = (
.catch((error) => console.log('Error loading adBlocker engine', error));
};
module.exports = { loadAdBlockerEngine };
export default { loadAdBlockerEngine };
if (require.main === module) {
loadAdBlockerEngine(); // Generate the engine without enabling it
}

View File

@ -1,13 +0,0 @@
const { PluginConfig } = require('../../config/dynamic');
const config = new PluginConfig('adblocker', { enableFront: true });
const blockers = {
WithBlocklists: 'With blocklists',
InPlayer: 'In player',
};
const shouldUseBlocklists = async () =>
(await config.get('blocker')) !== blockers.InPlayer;
module.exports = { shouldUseBlocklists, blockers, ...config };

View File

@ -0,0 +1,17 @@
import { PluginConfig } from '../../config/dynamic';
const config = new PluginConfig('adblocker', { enableFront: true });
export const blockers = {
WithBlocklists: 'With blocklists',
InPlayer: 'In player',
};
export const shouldUseBlocklists = async () => await config.get('blocker') !== blockers.InPlayer;
export default {
shouldUseBlocklists,
blockers,
get: config.get.bind(this),
set: config.set.bind(this),
};

View File

@ -1,3 +1,5 @@
/* eslint-disable */
// Source: https://addons.mozilla.org/en-US/firefox/addon/adblock-for-youtube/
// https://robwu.nl/crxviewer/?crx=https%3A%2F%2Faddons.mozilla.org%2Fen-US%2Ffirefox%2Faddon%2Fadblock-for-youtube%2F

View File

@ -1,15 +0,0 @@
const config = require('./config');
module.exports = () => [
{
label: 'Blocker',
submenu: Object.values(config.blockers).map((blocker) => ({
label: blocker,
type: 'radio',
checked: (config.get('blocker') || config.blockers.WithBlocklists) === blocker,
click() {
config.set('blocker', blocker);
},
})),
},
];

19
plugins/adblocker/menu.ts Normal file
View File

@ -0,0 +1,19 @@
import config from './config';
export default async () => {
const blockerConfig = await config.get('blocker');
return [
{
label: 'Blocker',
submenu: Object.values(config.blockers).map((blocker) => ({
label: blocker,
type: 'radio',
checked: (blockerConfig || config.blockers.WithBlocklists) === blocker,
click() {
config.set('blocker', blocker);
},
})),
},
];
};

View File

@ -1,10 +1,10 @@
const config = require('./config');
import config from './config';
module.exports = async () => {
export default async () => {
if (await config.shouldUseBlocklists()) {
// Preload adblocker to inject scripts/styles
require('@cliqz/adblocker-electron-preload');
} else if ((await config.get('blocker')) === config.blockers.InPlayer) {
require('./inject');
require('./inject.js');
}
};