Skip to content

Commit 36e7cde

Browse files
committed
feat: 优化规则编辑
1 parent abca764 commit 36e7cde

37 files changed

+272
-173
lines changed

.eslintignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules
22
*.d.ts
3-
/docs
3+
/docs/.vitepress/cache
4+
/docs/.vitepress/dist
45
/dist

.vscode/settings.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
// 使用 eslint 格式化代码
55
"eslint.enable": true,
6+
"eslint.validate": ["javascript", "html", "vue", "typescript"],
7+
68
"[vue]": {
79
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
810
},

alias.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { resolve } from 'path';
2+
3+
function r(p: string) {
4+
return resolve(__dirname, p);
5+
}
6+
7+
export const alias: Record<string, string> = {
8+
'@any-reader/core': r('./packages/core/src'),
9+
'@any-reader/shared': r('./packages/shared/src'),
10+
'@any-reader/rule-utils': r('./packages/rule-utils/src'),
11+
'@any-reader/epub': r('./packages/epub/src')
12+
};

docs/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ corepack enable
2929
# 安装依赖
3030
pnpm i
3131

32-
# 编译 解析库、工具库、前端模板
33-
pnpm run build
32+
# 运行网页版
33+
pnpm run web:dev
3434
```
3535

3636
### 源码目录结构

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"docs:preview": "vitepress preview"
1010
},
1111
"devDependencies": {
12+
"@any-reader/core": "workspace:^",
1213
"mermaid": "^11.2.0",
1314
"vitepress": "^1.3.4",
1415
"vitepress-plugin-mermaid": "^2.0.16"

docs/vite.config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineConfig } from 'vite';
2+
import { alias } from '../alias';
23

34
export default defineConfig({
45
optimizeDeps: {
@@ -8,5 +9,9 @@ export default defineConfig({
89
hmr: {
910
overlay: false
1011
}
12+
},
13+
14+
resolve: {
15+
alias
1116
}
1217
});

packages/core/build.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { defineBuildConfig } from 'unbuild';
22

33
export default defineBuildConfig({
4-
entries: ['src/index'],
4+
entries: ['src/index', 'src/browser/index'],
55
clean: true,
66
declaration: true,
77
rollup: {

packages/core/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
".": {
1515
"require": "./dist/index.cjs",
1616
"import": "./dist/index.mjs"
17+
},
18+
"./browser": {
19+
"require": "./dist/browser/index.cjs",
20+
"import": "./dist/browser/index.mjs"
1721
}
1822
},
1923
"main": "./dist/index.cjs",
@@ -27,6 +31,7 @@
2731
"stub": "unbuild --stub"
2832
},
2933
"dependencies": {
34+
"@any-reader/rule-utils": "workspace:^",
3035
"@xmldom/xmldom": "^0.9.2",
3136
"axios": "^1.7.7",
3237
"chardet": "^2.0.0",
@@ -41,7 +46,6 @@
4146
"xpath.js": "^1.1.0"
4247
},
4348
"devDependencies": {
44-
"@any-reader/rule-utils": "workspace:^",
4549
"@types/content-type": "^1.1.8",
4650
"@types/crypto-js": "^4.2.2",
4751
"@types/xmldom": "^0.1.34",

packages/core/src/analyzer.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ import { AnalyzerFilter } from './analyzer/AnalyzerFilter';
22
import { AnalyzerHtml } from './analyzer/AnalyzerHtml';
33
import { AnalyzerJS } from './analyzer/AnalyzerJS';
44
import { AnalyzerJSONPath } from './analyzer/AnalyzerJSONPath';
5-
import { AnalyzerManager, Analyzers } from './analyzer/AnalyzerManager';
65
import { AnalyzerRegExp } from './analyzer/AnalyzerRegExp';
76
import { AnalyzerReplace } from './analyzer/AnalyzerReplace';
87
import { AnalyzerXPath } from './analyzer/AnalyzerXPath';
98
import { AnalyzerWeb } from './analyzer/AnalyzerWeb';
10-
import { ILogger, LogLevel, NoLogger } from './logger';
9+
import { AnalyzerManager, AnalyzerManagerOption } from './analyzer/AnalyzerManager';
10+
import { LogLevel, NoLogger } from './logger';
11+
import { JSEngine } from './analyzer/JSEngine';
1112

1213
export { analyzerUrl } from './analyzer/analyzerUrl';
14+
export { AnalyzerHtml, AnalyzerJS, AnalyzerJSONPath, AnalyzerRegExp, AnalyzerReplace, AnalyzerXPath, AnalyzerFilter, AnalyzerWeb };
1315

14-
export function createAnalyzerManager(params: { analyzers?: Analyzers[]; logger?: ILogger; logLevel?: LogLevel } = {}): AnalyzerManager {
16+
export function createAnalyzerManager(params: Partial<AnalyzerManagerOption> = {}): AnalyzerManager {
1517
return new AnalyzerManager({
1618
logger: params.logger || new NoLogger(),
1719
logLevel: params.logLevel || LogLevel.Off,
20+
JSEngine: params.JSEngine || JSEngine,
1821
analyzers: params.analyzers || [
1922
{
2023
pattern: /^@css:/i,

packages/core/src/analyzer/Analyzer.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { JSEngine } from '../sandbox/JSEngine';
2+
13
export abstract class IAnalyzer {
24
abstract parse(content: string): void;
35
abstract getString(rule: string): Promise<string>;
@@ -6,6 +8,12 @@ export abstract class IAnalyzer {
68
}
79

810
export class Analyzer implements IAnalyzer {
11+
JSEngine: typeof JSEngine;
12+
13+
constructor(options: { JSEngine: typeof JSEngine }) {
14+
this.JSEngine = options.JSEngine;
15+
}
16+
917
parse(_: string): void {
1018
throw new Error('Method not implemented.');
1119
}

0 commit comments

Comments
 (0)