Eslint
This commit is contained in:
parent
c5fc07454e
commit
5b4743768e
6 changed files with 130 additions and 1 deletions
1
.eslintignore
Normal file
1
.eslintignore
Normal file
|
@ -0,0 +1 @@
|
|||
*.svelte
|
15
.eslintrc.js
Normal file
15
.eslintrc.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
env: { webextensions: true },
|
||||
parser: "@typescript-eslint/parser",
|
||||
plugins: ["@typescript-eslint"],
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"prettier/@typescript-eslint",
|
||||
],
|
||||
rules: {
|
||||
"@typescript-eslint/no-non-null-assertion": "off",
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
||||
},
|
||||
};
|
|
@ -50,6 +50,6 @@
|
|||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*/**": "prettier --write"
|
||||
"*/**": ["eslint --fix ","prettier --write"]
|
||||
}
|
||||
}
|
||||
|
|
76
src/background/gtranslate_commands.ts
Normal file
76
src/background/gtranslate_commands.ts
Normal file
|
@ -0,0 +1,76 @@
|
|||
import { browser, Runtime } from "webextension-polyfill-ts";
|
||||
import { Communicator, commandList, commandFunction } from "../communicator";
|
||||
import { newPromise } from "../utils";
|
||||
|
||||
interface BackgroundCommands extends commandList {
|
||||
translationFinished: TranslationMessage;
|
||||
languageList: LanguageListMessage;
|
||||
}
|
||||
|
||||
interface ContentScriptCommands extends commandList {
|
||||
translationRequest: TranslationRequest;
|
||||
}
|
||||
|
||||
interface TranslationMessage extends commandFunction {
|
||||
args: Translation;
|
||||
}
|
||||
|
||||
interface LanguageListMessage extends commandFunction {
|
||||
args: Array<Language>;
|
||||
}
|
||||
|
||||
interface TranslationRequest extends commandFunction {
|
||||
args: string;
|
||||
}
|
||||
|
||||
export class BackgroundMessenger extends Communicator<
|
||||
BackgroundCommands,
|
||||
ContentScriptCommands
|
||||
> {
|
||||
conn: Promise<Runtime.Port>;
|
||||
private resolvConn: (p: Runtime.Port) => void;
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
[this.conn, this.resolvConn] = newPromise<Runtime.Port>();
|
||||
|
||||
browser.runtime.onConnect.addListener((p) => {
|
||||
if (p.name != "gtranslate_scraper_conn") return;
|
||||
this.resolvConn(p);
|
||||
p.onDisconnect.addListener(
|
||||
() => ([this.conn, this.resolvConn] = newPromise<Runtime.Port>())
|
||||
);
|
||||
p.onMessage.addListener((m) => this.onMessage(m, p.sender!));
|
||||
});
|
||||
}
|
||||
|
||||
async runCommand<K extends keyof ContentScriptCommands>(
|
||||
command: K,
|
||||
args: ContentScriptCommands[K]["args"]
|
||||
) {
|
||||
const msg = this.getCommandMessage(command, args);
|
||||
(await this.conn).postMessage(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export class ContentScriptMessenger extends Communicator<
|
||||
ContentScriptCommands,
|
||||
BackgroundCommands
|
||||
> {
|
||||
conn: Runtime.Port;
|
||||
constructor() {
|
||||
super();
|
||||
this.conn = browser.runtime.connect({
|
||||
name: "gtranslate_scraper_conn",
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
} as any); //The declaration file is wrong
|
||||
this.conn.onMessage.addListener((m) => this.onMessage(m));
|
||||
}
|
||||
async runCommand<K extends keyof BackgroundCommands>(
|
||||
command: K,
|
||||
args: BackgroundCommands[K]["args"]
|
||||
) {
|
||||
const msg = this.getCommandMessage(command, args);
|
||||
return this.conn.postMessage(msg);
|
||||
}
|
||||
}
|
4
src/file.d.ts
vendored
Normal file
4
src/file.d.ts
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
declare module "*?file" {
|
||||
const file: string;
|
||||
export = file;
|
||||
}
|
33
src/types.ts
Normal file
33
src/types.ts
Normal file
|
@ -0,0 +1,33 @@
|
|||
import type { Flashcards } from "./background/database";
|
||||
|
||||
declare global {
|
||||
interface Translation {
|
||||
src: string;
|
||||
result: string;
|
||||
languages: LanguagePair;
|
||||
}
|
||||
|
||||
interface Flashcard {
|
||||
id?: IDBValidKey;
|
||||
src: string;
|
||||
result: string;
|
||||
dateAdded: Date;
|
||||
exported: boolean;
|
||||
languages: LanguagePair;
|
||||
}
|
||||
|
||||
interface LanguagePair {
|
||||
srcLang: Language;
|
||||
dstLang: Language;
|
||||
}
|
||||
|
||||
interface Language {
|
||||
code: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface Window {
|
||||
hasRun?: boolean;
|
||||
flashcardDB: Flashcards;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue