v2er-insight 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +215 -0
- package/dist/cli/commands/ai.d.ts +13 -0
- package/dist/cli/commands/ai.js +153 -0
- package/dist/cli/commands/analyze.d.ts +13 -0
- package/dist/cli/commands/analyze.js +80 -0
- package/dist/cli/commands/config.d.ts +43 -0
- package/dist/cli/commands/config.js +267 -0
- package/dist/cli/commands/fetch.d.ts +13 -0
- package/dist/cli/commands/fetch.js +150 -0
- package/dist/cli/commands/index.d.ts +10 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/run.d.ts +23 -0
- package/dist/cli/commands/run.js +52 -0
- package/dist/cli/commands/show.d.ts +13 -0
- package/dist/cli/commands/show.js +154 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +107 -0
- package/dist/cli/types.d.ts +58 -0
- package/dist/cli/types.js +6 -0
- package/dist/cli/utils/error.d.ts +6 -0
- package/dist/cli/utils/error.js +18 -0
- package/dist/cli/utils.d.ts +20 -0
- package/dist/cli/utils.js +48 -0
- package/dist/cli/workflow/orchestrator.d.ts +15 -0
- package/dist/cli/workflow/orchestrator.js +144 -0
- package/dist/cli/workflow/recovery.d.ts +10 -0
- package/dist/cli/workflow/recovery.js +134 -0
- package/dist/cli/workflow/state.d.ts +19 -0
- package/dist/cli/workflow/state.js +45 -0
- package/dist/cli/workflow/types.d.ts +60 -0
- package/dist/cli/workflow/types.js +3 -0
- package/dist/config/defaults.d.ts +48 -0
- package/dist/config/defaults.js +42 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.js +21 -0
- package/dist/config/path.d.ts +11 -0
- package/dist/config/path.js +28 -0
- package/dist/config/proxy.d.ts +16 -0
- package/dist/config/proxy.js +39 -0
- package/dist/config/storage.d.ts +23 -0
- package/dist/config/storage.js +85 -0
- package/dist/config/types/ai.d.ts +31 -0
- package/dist/config/types/ai.js +13 -0
- package/dist/config/types/analyzer.d.ts +15 -0
- package/dist/config/types/analyzer.js +6 -0
- package/dist/config/types/data.d.ts +20 -0
- package/dist/config/types/data.js +6 -0
- package/dist/config/types/fetch.d.ts +9 -0
- package/dist/config/types/fetch.js +6 -0
- package/dist/config/types/index.d.ts +32 -0
- package/dist/config/types/index.js +11 -0
- package/dist/config/types/log.d.ts +11 -0
- package/dist/config/types/log.js +6 -0
- package/dist/core/ai/index.d.ts +11 -0
- package/dist/core/ai/index.js +18 -0
- package/dist/core/ai/parser/index.d.ts +12 -0
- package/dist/core/ai/parser/index.js +44 -0
- package/dist/core/ai/parser/validator.d.ts +18 -0
- package/dist/core/ai/parser/validator.js +179 -0
- package/dist/core/ai/prompt/index.d.ts +20 -0
- package/dist/core/ai/prompt/index.js +75 -0
- package/dist/core/ai/prompt/system-prompt.md +210 -0
- package/dist/core/ai/providers/gemini.d.ts +25 -0
- package/dist/core/ai/providers/gemini.js +74 -0
- package/dist/core/ai/providers/index.d.ts +6 -0
- package/dist/core/ai/providers/index.js +9 -0
- package/dist/core/ai/types/index.d.ts +7 -0
- package/dist/core/ai/types/index.js +6 -0
- package/dist/core/ai/types/options.d.ts +14 -0
- package/dist/core/ai/types/options.js +6 -0
- package/dist/core/ai/types/provider.d.ts +19 -0
- package/dist/core/ai/types/provider.js +6 -0
- package/dist/core/ai/types/result.d.ts +64 -0
- package/dist/core/ai/types/result.js +6 -0
- package/dist/core/ai/utils/api-key.d.ts +15 -0
- package/dist/core/ai/utils/api-key.js +36 -0
- package/dist/core/ai/utils/index.d.ts +6 -0
- package/dist/core/ai/utils/index.js +11 -0
- package/dist/core/ai/utils/retry.d.ts +15 -0
- package/dist/core/ai/utils/retry.js +37 -0
- package/dist/core/analyzer/builder.d.ts +23 -0
- package/dist/core/analyzer/builder.js +113 -0
- package/dist/core/analyzer/content/chunker.d.ts +18 -0
- package/dist/core/analyzer/content/chunker.js +74 -0
- package/dist/core/analyzer/content/index.d.ts +7 -0
- package/dist/core/analyzer/content/index.js +13 -0
- package/dist/core/analyzer/content/transformer.d.ts +19 -0
- package/dist/core/analyzer/content/transformer.js +33 -0
- package/dist/core/analyzer/index.d.ts +17 -0
- package/dist/core/analyzer/index.js +21 -0
- package/dist/core/analyzer/periods/detector.d.ts +17 -0
- package/dist/core/analyzer/periods/detector.js +36 -0
- package/dist/core/analyzer/periods/index.d.ts +6 -0
- package/dist/core/analyzer/periods/index.js +11 -0
- package/dist/core/analyzer/periods/splitter.d.ts +11 -0
- package/dist/core/analyzer/periods/splitter.js +35 -0
- package/dist/core/analyzer/stats/index.d.ts +7 -0
- package/dist/core/analyzer/stats/index.js +13 -0
- package/dist/core/analyzer/stats/reply-stats.d.ts +15 -0
- package/dist/core/analyzer/stats/reply-stats.js +45 -0
- package/dist/core/analyzer/stats/topic-stats.d.ts +16 -0
- package/dist/core/analyzer/stats/topic-stats.js +51 -0
- package/dist/core/analyzer/stats/user-overview.d.ts +9 -0
- package/dist/core/analyzer/stats/user-overview.js +52 -0
- package/dist/core/analyzer/types/index.d.ts +7 -0
- package/dist/core/analyzer/types/index.js +6 -0
- package/dist/core/analyzer/types/input.d.ts +13 -0
- package/dist/core/analyzer/types/input.js +6 -0
- package/dist/core/analyzer/types/internal.d.ts +28 -0
- package/dist/core/analyzer/types/internal.js +6 -0
- package/dist/core/analyzer/types/output.d.ts +68 -0
- package/dist/core/analyzer/types/output.js +6 -0
- package/dist/core/analyzer/utils/date-parser.d.ts +41 -0
- package/dist/core/analyzer/utils/date-parser.js +118 -0
- package/dist/core/analyzer/utils/index.d.ts +6 -0
- package/dist/core/analyzer/utils/index.js +18 -0
- package/dist/core/analyzer/utils/stats.d.ts +12 -0
- package/dist/core/analyzer/utils/stats.js +64 -0
- package/dist/core/v2ex/index.d.ts +10 -0
- package/dist/core/v2ex/index.js +27 -0
- package/dist/core/v2ex/parsers/index.d.ts +8 -0
- package/dist/core/v2ex/parsers/index.js +15 -0
- package/dist/core/v2ex/parsers/replies-page.d.ts +11 -0
- package/dist/core/v2ex/parsers/replies-page.js +114 -0
- package/dist/core/v2ex/parsers/selectors/index.d.ts +10 -0
- package/dist/core/v2ex/parsers/selectors/index.js +18 -0
- package/dist/core/v2ex/parsers/selectors/pagination.d.ts +11 -0
- package/dist/core/v2ex/parsers/selectors/pagination.js +14 -0
- package/dist/core/v2ex/parsers/selectors/replies-page.d.ts +21 -0
- package/dist/core/v2ex/parsers/selectors/replies-page.js +24 -0
- package/dist/core/v2ex/parsers/selectors/topic-detail.d.ts +19 -0
- package/dist/core/v2ex/parsers/selectors/topic-detail.js +22 -0
- package/dist/core/v2ex/parsers/selectors/topics-list-page.d.ts +11 -0
- package/dist/core/v2ex/parsers/selectors/topics-list-page.js +14 -0
- package/dist/core/v2ex/parsers/selectors/user-profile.d.ts +11 -0
- package/dist/core/v2ex/parsers/selectors/user-profile.js +14 -0
- package/dist/core/v2ex/parsers/topic-detail.d.ts +11 -0
- package/dist/core/v2ex/parsers/topic-detail.js +94 -0
- package/dist/core/v2ex/parsers/topics-list-page.d.ts +11 -0
- package/dist/core/v2ex/parsers/topics-list-page.js +90 -0
- package/dist/core/v2ex/parsers/user-profile.d.ts +11 -0
- package/dist/core/v2ex/parsers/user-profile.js +70 -0
- package/dist/core/v2ex/parsers/utils/index.d.ts +6 -0
- package/dist/core/v2ex/parsers/utils/index.js +9 -0
- package/dist/core/v2ex/parsers/utils/pagination.d.ts +19 -0
- package/dist/core/v2ex/parsers/utils/pagination.js +29 -0
- package/dist/core/v2ex/types/entities.d.ts +45 -0
- package/dist/core/v2ex/types/entities.js +7 -0
- package/dist/core/v2ex/types/index.d.ts +6 -0
- package/dist/core/v2ex/types/index.js +6 -0
- package/dist/core/v2ex/types/parse-result.d.ts +64 -0
- package/dist/core/v2ex/types/parse-result.js +7 -0
- package/dist/core/v2ex/urls/constants.d.ts +5 -0
- package/dist/core/v2ex/urls/constants.js +8 -0
- package/dist/core/v2ex/urls/index.d.ts +7 -0
- package/dist/core/v2ex/urls/index.js +16 -0
- package/dist/core/v2ex/urls/topic-urls.d.ts +19 -0
- package/dist/core/v2ex/urls/topic-urls.js +48 -0
- package/dist/core/v2ex/urls/user-urls.d.ts +24 -0
- package/dist/core/v2ex/urls/user-urls.js +36 -0
- package/dist/core/v2ex/use-cases/index.d.ts +8 -0
- package/dist/core/v2ex/use-cases/index.js +14 -0
- package/dist/core/v2ex/use-cases/types.d.ts +31 -0
- package/dist/core/v2ex/use-cases/types.js +7 -0
- package/dist/core/v2ex/use-cases/user/index.d.ts +10 -0
- package/dist/core/v2ex/use-cases/user/index.js +16 -0
- package/dist/core/v2ex/use-cases/user/profile.d.ts +14 -0
- package/dist/core/v2ex/use-cases/user/profile.js +51 -0
- package/dist/core/v2ex/use-cases/user/replies.d.ts +14 -0
- package/dist/core/v2ex/use-cases/user/replies.js +20 -0
- package/dist/core/v2ex/use-cases/user/topic-urls.d.ts +21 -0
- package/dist/core/v2ex/use-cases/user/topic-urls.js +29 -0
- package/dist/core/v2ex/use-cases/user/topics-detail.d.ts +30 -0
- package/dist/core/v2ex/use-cases/user/topics-detail.js +62 -0
- package/dist/core/v2ex/use-cases/utils/index.d.ts +6 -0
- package/dist/core/v2ex/use-cases/utils/index.js +9 -0
- package/dist/core/v2ex/use-cases/utils/page-orchestrator.d.ts +24 -0
- package/dist/core/v2ex/use-cases/utils/page-orchestrator.js +93 -0
- package/dist/infra/fetcher/agent.d.ts +10 -0
- package/dist/infra/fetcher/agent.js +17 -0
- package/dist/infra/fetcher/fetcher.d.ts +10 -0
- package/dist/infra/fetcher/fetcher.js +81 -0
- package/dist/infra/fetcher/index.d.ts +3 -0
- package/dist/infra/fetcher/index.js +19 -0
- package/dist/infra/fetcher/types.d.ts +29 -0
- package/dist/infra/fetcher/types.js +6 -0
- package/dist/infra/logger/colors.d.ts +15 -0
- package/dist/infra/logger/colors.js +18 -0
- package/dist/infra/logger/index.d.ts +16 -0
- package/dist/infra/logger/index.js +19 -0
- package/dist/infra/logger/logger.d.ts +34 -0
- package/dist/infra/logger/logger.js +101 -0
- package/dist/infra/storage/cleaner.d.ts +24 -0
- package/dist/infra/storage/cleaner.js +73 -0
- package/dist/infra/storage/index.d.ts +7 -0
- package/dist/infra/storage/index.js +15 -0
- package/dist/infra/storage/paths.d.ts +26 -0
- package/dist/infra/storage/paths.js +53 -0
- package/dist/infra/storage/reader.d.ts +15 -0
- package/dist/infra/storage/reader.js +34 -0
- package/dist/infra/storage/types.d.ts +21 -0
- package/dist/infra/storage/types.js +18 -0
- package/dist/infra/storage/writer.d.ts +16 -0
- package/dist/infra/storage/writer.js +31 -0
- package/package.json +89 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Storage 模块类型定义
|
|
4
|
+
*
|
|
5
|
+
* 定义数据文件类型和读写选项。
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DATA_FILE_NAMES = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* 数据文件类型到文件名的映射
|
|
11
|
+
* 供 paths 模块使用
|
|
12
|
+
*/
|
|
13
|
+
exports.DATA_FILE_NAMES = {
|
|
14
|
+
raw: 'raw.json',
|
|
15
|
+
analyzed: 'analyzed.json',
|
|
16
|
+
result: 'result.json',
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage 文件写入
|
|
3
|
+
*
|
|
4
|
+
* 将数据写入用户数据目录的 JSON 文件。
|
|
5
|
+
* 自动创建目录,默认格式化输出。
|
|
6
|
+
*/
|
|
7
|
+
import type { DataFileType, WriteOptions } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* 写入指定用户的数据文件
|
|
10
|
+
* @param username - V2EX 用户名
|
|
11
|
+
* @param type - 数据文件类型(raw / analyzed / result)
|
|
12
|
+
* @param data - 要写入的数据对象
|
|
13
|
+
* @param options - 写入选项
|
|
14
|
+
*/
|
|
15
|
+
export declare function writeDataFile(username: string, type: DataFileType, data: unknown, options?: WriteOptions): void;
|
|
16
|
+
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Storage 文件写入
|
|
4
|
+
*
|
|
5
|
+
* 将数据写入用户数据目录的 JSON 文件。
|
|
6
|
+
* 自动创建目录,默认格式化输出。
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.writeDataFile = writeDataFile;
|
|
13
|
+
const fs_1 = __importDefault(require("fs"));
|
|
14
|
+
const paths_1 = require("./paths");
|
|
15
|
+
/**
|
|
16
|
+
* 写入指定用户的数据文件
|
|
17
|
+
* @param username - V2EX 用户名
|
|
18
|
+
* @param type - 数据文件类型(raw / analyzed / result)
|
|
19
|
+
* @param data - 要写入的数据对象
|
|
20
|
+
* @param options - 写入选项
|
|
21
|
+
*/
|
|
22
|
+
function writeDataFile(username, type, data, options = {}) {
|
|
23
|
+
const { pretty = true } = options;
|
|
24
|
+
const dataDir = (0, paths_1.getUserDataDir)(username);
|
|
25
|
+
const filePath = (0, paths_1.getDataFilePath)(username, type);
|
|
26
|
+
// recursive: true 在目录已存在时不会抛异常,无需前置 existsSync 检查
|
|
27
|
+
fs_1.default.mkdirSync(dataDir, { recursive: true });
|
|
28
|
+
const content = pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
|
|
29
|
+
fs_1.default.writeFileSync(filePath, content, { encoding: 'utf-8', mode: 0o600 });
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=writer.js.map
|
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "v2er-insight",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./dist/cli/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"v2er": "./dist/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"clean:dist": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
15
|
+
"copy:assets": "node ./scripts/copy-dist-assets.cjs",
|
|
16
|
+
"build:compile": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
17
|
+
"build:assets": "pnpm run copy:assets",
|
|
18
|
+
"build": "pnpm run build:compile && pnpm run build:assets",
|
|
19
|
+
"build:release": "pnpm run clean:dist && pnpm run build && pnpm run prune:maps",
|
|
20
|
+
"prune:maps": "node ./scripts/prune-dist-maps.cjs",
|
|
21
|
+
"prepack": "pnpm run build:release",
|
|
22
|
+
"pack:check": "pnpm pack --dry-run --json",
|
|
23
|
+
"release:check": "pnpm run check && pnpm run test && pnpm run pack:check",
|
|
24
|
+
"release:build": "pnpm run build:release",
|
|
25
|
+
"release:publish": "npm publish --access public",
|
|
26
|
+
"start": "node dist/cli/index.js",
|
|
27
|
+
"dev": "vitest",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"lint": "eslint \"src/**/*.ts\" \"*.{mjs,ts}\"",
|
|
30
|
+
"lint:fix": "eslint \"src/**/*.ts\" \"*.{mjs,ts}\" --fix",
|
|
31
|
+
"format": "prettier --write \"src/**/*.ts\" \"*.{ts,mjs,json,md}\"",
|
|
32
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"*.{ts,mjs,json,md}\"",
|
|
33
|
+
"check:types": "tsc --noEmit",
|
|
34
|
+
"check": "npm run check:types && npm run lint && npm run format:check",
|
|
35
|
+
"ci": "npm run check && npm run test",
|
|
36
|
+
"prepare": "husky"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [],
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "https://github.com/ia319/v2er-insight"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/ia319/v2er-insight",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/ia319/v2er-insight/issues"
|
|
46
|
+
},
|
|
47
|
+
"author": "ia319",
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20.18.1"
|
|
50
|
+
},
|
|
51
|
+
"license": "ISC",
|
|
52
|
+
"type": "commonjs",
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@google/genai": "^1.40.0",
|
|
55
|
+
"@types/node": "^25.0.3",
|
|
56
|
+
"axios": "^1.13.2",
|
|
57
|
+
"chalk": "^4.1.2",
|
|
58
|
+
"cheerio": "^1.1.2",
|
|
59
|
+
"commander": "^14.0.2",
|
|
60
|
+
"dotenv": "^17.2.3",
|
|
61
|
+
"https-proxy-agent": "^7.0.6",
|
|
62
|
+
"ora": "^9.0.0",
|
|
63
|
+
"ts-node": "^10.9.2",
|
|
64
|
+
"typescript": "^5.9.3",
|
|
65
|
+
"undici": "^7.22.0"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.50.0",
|
|
69
|
+
"@typescript-eslint/parser": "^8.50.0",
|
|
70
|
+
"eslint": "^9.39.2",
|
|
71
|
+
"eslint-config-prettier": "^10.1.8",
|
|
72
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
73
|
+
"husky": "^9.1.7",
|
|
74
|
+
"lint-staged": "^16.2.7",
|
|
75
|
+
"prettier": "^3.7.4",
|
|
76
|
+
"tsc-alias": "^1.8.16",
|
|
77
|
+
"tsconfig-paths": "^4.2.0",
|
|
78
|
+
"vitest": "^4.0.16"
|
|
79
|
+
},
|
|
80
|
+
"lint-staged": {
|
|
81
|
+
"*.{ts,js}": [
|
|
82
|
+
"eslint --fix",
|
|
83
|
+
"prettier --write"
|
|
84
|
+
],
|
|
85
|
+
"*.{json,md}": [
|
|
86
|
+
"prettier --write"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
}
|