add rules generate script
This commit is contained in:
@@ -25,7 +25,8 @@
|
|||||||
"build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json",
|
"build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json",
|
||||||
"build:web": "rm -rf build/web && BUILD_PATH=./build/web REACT_APP_CLIENT=userscript react-app-rewired build",
|
"build:web": "rm -rf build/web && BUILD_PATH=./build/web REACT_APP_CLIENT=userscript react-app-rewired build",
|
||||||
"build:userscript": "rm -rf build/userscript && mkdir build/userscript && cp build/web/kiss-translator.user.js build/userscript/kiss-translator.user.js",
|
"build:userscript": "rm -rf build/userscript && mkdir build/userscript && cp build/web/kiss-translator.user.js build/userscript/kiss-translator.user.js",
|
||||||
"build": "yarn build:chrome && yarn build:edge && yarn build:firefox && yarn build:web && yarn build:userscript",
|
"build:rules": "babel-node src/rules.js",
|
||||||
|
"build": "yarn build:chrome && yarn build:edge && yarn build:firefox && yarn build:web && yarn build:userscript && yarn build:rules",
|
||||||
"deploy:web": "wrangler pages deploy ./build/web --project-name kiss-translator",
|
"deploy:web": "wrangler pages deploy ./build/web --project-name kiss-translator",
|
||||||
"test": "react-app-rewired test",
|
"test": "react-app-rewired test",
|
||||||
"eject": "react-scripts eject"
|
"eject": "react-scripts eject"
|
||||||
@@ -53,6 +54,10 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.22.10",
|
||||||
|
"@babel/node": "^7.22.10",
|
||||||
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
|
"@babel/preset-env": "^7.22.10",
|
||||||
"react-app-rewired": "^2.2.1",
|
"react-app-rewired": "^2.2.1",
|
||||||
"wrangler": "^3.4.0"
|
"wrangler": "^3.4.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
import { DEFAULT_SELECTOR, RULES } from "./rules";
|
import {
|
||||||
|
DEFAULT_SELECTOR,
|
||||||
|
GLOBAL_KEY,
|
||||||
|
DEFAULT_RULE,
|
||||||
|
BUILTIN_RULES,
|
||||||
|
} from "./rules";
|
||||||
export { I18N, UI_LANGS } from "./i18n";
|
export { I18N, UI_LANGS } from "./i18n";
|
||||||
|
export { GLOBAL_KEY, DEFAULT_RULE, BUILTIN_RULES };
|
||||||
|
|
||||||
const APP_NAME = process.env.REACT_APP_NAME.trim().split(/\s+/).join("-");
|
const APP_NAME = process.env.REACT_APP_NAME.trim().split(/\s+/).join("-");
|
||||||
|
|
||||||
@@ -11,8 +17,6 @@ export const STOKEY_RULES = `${APP_NAME}_rules`;
|
|||||||
export const STOKEY_SYNC = `${APP_NAME}_sync`;
|
export const STOKEY_SYNC = `${APP_NAME}_sync`;
|
||||||
export const STOKEY_FAB = `${APP_NAME}_fab`;
|
export const STOKEY_FAB = `${APP_NAME}_fab`;
|
||||||
|
|
||||||
export const GLOBAL_KEY = "*";
|
|
||||||
|
|
||||||
export const CLIENT_WEB = "web";
|
export const CLIENT_WEB = "web";
|
||||||
export const CLIENT_CHROME = "chrome";
|
export const CLIENT_CHROME = "chrome";
|
||||||
export const CLIENT_EDGE = "edge";
|
export const CLIENT_EDGE = "edge";
|
||||||
@@ -143,18 +147,6 @@ export const GLOBLA_RULE = {
|
|||||||
bgColor: "",
|
bgColor: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
// 默认规则
|
|
||||||
export const DEFAULT_RULE = {
|
|
||||||
pattern: "",
|
|
||||||
selector: "",
|
|
||||||
translator: GLOBAL_KEY,
|
|
||||||
fromLang: GLOBAL_KEY,
|
|
||||||
toLang: GLOBAL_KEY,
|
|
||||||
textStyle: GLOBAL_KEY,
|
|
||||||
transOpen: GLOBAL_KEY,
|
|
||||||
bgColor: "",
|
|
||||||
};
|
|
||||||
|
|
||||||
export const DEFAULT_SETTING = {
|
export const DEFAULT_SETTING = {
|
||||||
darkMode: false, // 深色模式
|
darkMode: false, // 深色模式
|
||||||
uiLang: "en", // 界面语言
|
uiLang: "en", // 界面语言
|
||||||
@@ -169,20 +161,7 @@ export const DEFAULT_SETTING = {
|
|||||||
openaiPrompt: `You will be provided with a sentence in ${PROMPT_PLACE_FROM}, and your task is to translate it into ${PROMPT_PLACE_TO}.`,
|
openaiPrompt: `You will be provided with a sentence in ${PROMPT_PLACE_FROM}, and your task is to translate it into ${PROMPT_PLACE_TO}.`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DEFAULT_RULES = [
|
export const DEFAULT_RULES = [GLOBLA_RULE];
|
||||||
{
|
|
||||||
...DEFAULT_RULE,
|
|
||||||
...RULES[0],
|
|
||||||
transOpen: "true",
|
|
||||||
},
|
|
||||||
GLOBLA_RULE,
|
|
||||||
];
|
|
||||||
|
|
||||||
export const BUILTIN_RULES = RULES.map((item) => ({
|
|
||||||
...DEFAULT_RULE,
|
|
||||||
...item,
|
|
||||||
transOpen: "true",
|
|
||||||
}));
|
|
||||||
|
|
||||||
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
export const TRANS_MIN_LENGTH = 5; // 最短翻译长度
|
||||||
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
export const TRANS_MAX_LENGTH = 5000; // 最长翻译长度
|
||||||
|
|||||||
@@ -2,7 +2,20 @@ const els = `li, p, h1, h2, h3, h4, h5, h6, dd`;
|
|||||||
|
|
||||||
export const DEFAULT_SELECTOR = `:is(${els})`;
|
export const DEFAULT_SELECTOR = `:is(${els})`;
|
||||||
|
|
||||||
export const RULES = [
|
export const GLOBAL_KEY = "*";
|
||||||
|
|
||||||
|
export const DEFAULT_RULE = {
|
||||||
|
pattern: "",
|
||||||
|
selector: "",
|
||||||
|
translator: GLOBAL_KEY,
|
||||||
|
fromLang: GLOBAL_KEY,
|
||||||
|
toLang: GLOBAL_KEY,
|
||||||
|
textStyle: GLOBAL_KEY,
|
||||||
|
transOpen: GLOBAL_KEY,
|
||||||
|
bgColor: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
const RULES = [
|
||||||
{
|
{
|
||||||
pattern: `www.google.com/search`,
|
pattern: `www.google.com/search`,
|
||||||
selector: `h3, .IsZvec, .VwiC3b`,
|
selector: `h3, .IsZvec, .VwiC3b`,
|
||||||
@@ -132,3 +145,9 @@ export const RULES = [
|
|||||||
selector: `h1, #video-title, #content-text, #title, yt-attributed-string>span>span`,
|
selector: `h1, #video-title, #content-text, #title, yt-attributed-string>span>span`,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const BUILTIN_RULES = RULES.map((item) => ({
|
||||||
|
...DEFAULT_RULE,
|
||||||
|
...item,
|
||||||
|
transOpen: "true",
|
||||||
|
}));
|
||||||
|
|||||||
17
src/rules.js
Normal file
17
src/rules.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
import { BUILTIN_RULES } from "./config/rules";
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
try {
|
||||||
|
const data = JSON.stringify(BUILTIN_RULES, null, " ");
|
||||||
|
const file = path.resolve(
|
||||||
|
__dirname,
|
||||||
|
"../build/web/kiss-translator-rules.json"
|
||||||
|
);
|
||||||
|
fs.writeFileSync(file, data);
|
||||||
|
console.info(`Built-in rules generated: ${file}`);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user