mta-mcp 2.2.0 → 2.3.1
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/bin/mta.cjs +43 -0
- package/dist/index.cjs +4784 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4769 -0
- package/dist/index.js.map +1 -0
- package/package.json +21 -10
- package/build/core/agentTemplate.d.ts +0 -33
- package/build/core/agentTemplate.d.ts.map +0 -1
- package/build/core/agentTemplate.js +0 -158
- package/build/core/agentTemplate.js.map +0 -1
- package/build/core/analyzers/eslint.d.ts +0 -51
- package/build/core/analyzers/eslint.d.ts.map +0 -1
- package/build/core/analyzers/eslint.js +0 -259
- package/build/core/analyzers/eslint.js.map +0 -1
- package/build/core/analyzers/index.d.ts +0 -9
- package/build/core/analyzers/index.d.ts.map +0 -1
- package/build/core/analyzers/index.js +0 -9
- package/build/core/analyzers/index.js.map +0 -1
- package/build/core/analyzers/registry.d.ts +0 -59
- package/build/core/analyzers/registry.d.ts.map +0 -1
- package/build/core/analyzers/registry.js +0 -241
- package/build/core/analyzers/registry.js.map +0 -1
- package/build/core/analyzers/tsconfig.d.ts +0 -45
- package/build/core/analyzers/tsconfig.d.ts.map +0 -1
- package/build/core/analyzers/tsconfig.js +0 -197
- package/build/core/analyzers/tsconfig.js.map +0 -1
- package/build/core/analyzers/types.d.ts +0 -176
- package/build/core/analyzers/types.d.ts.map +0 -1
- package/build/core/analyzers/types.js +0 -39
- package/build/core/analyzers/types.js.map +0 -1
- package/build/core/analyzers/vite.d.ts +0 -46
- package/build/core/analyzers/vite.d.ts.map +0 -1
- package/build/core/analyzers/vite.js +0 -211
- package/build/core/analyzers/vite.js.map +0 -1
- package/build/core/autoInitializer.d.ts +0 -34
- package/build/core/autoInitializer.d.ts.map +0 -1
- package/build/core/autoInitializer.js +0 -145
- package/build/core/autoInitializer.js.map +0 -1
- package/build/core/codeValidator.d.ts +0 -82
- package/build/core/codeValidator.d.ts.map +0 -1
- package/build/core/codeValidator.js +0 -287
- package/build/core/codeValidator.js.map +0 -1
- package/build/core/enhancedProjectAnalyzer.d.ts +0 -102
- package/build/core/enhancedProjectAnalyzer.d.ts.map +0 -1
- package/build/core/enhancedProjectAnalyzer.js +0 -312
- package/build/core/enhancedProjectAnalyzer.js.map +0 -1
- package/build/core/errors.d.ts +0 -84
- package/build/core/errors.d.ts.map +0 -1
- package/build/core/errors.js +0 -151
- package/build/core/errors.js.map +0 -1
- package/build/core/githubClient.d.ts +0 -26
- package/build/core/githubClient.d.ts.map +0 -1
- package/build/core/githubClient.js +0 -60
- package/build/core/githubClient.js.map +0 -1
- package/build/core/i18nDetector.d.ts +0 -47
- package/build/core/i18nDetector.d.ts.map +0 -1
- package/build/core/i18nDetector.js +0 -314
- package/build/core/i18nDetector.js.map +0 -1
- package/build/core/index.d.ts +0 -11
- package/build/core/index.d.ts.map +0 -1
- package/build/core/index.js +0 -14
- package/build/core/index.js.map +0 -1
- package/build/core/logger.d.ts +0 -91
- package/build/core/logger.d.ts.map +0 -1
- package/build/core/logger.js +0 -164
- package/build/core/logger.js.map +0 -1
- package/build/core/mappings/index.d.ts +0 -5
- package/build/core/mappings/index.d.ts.map +0 -1
- package/build/core/mappings/index.js +0 -5
- package/build/core/mappings/index.js.map +0 -1
- package/build/core/mappings/scenarioMappings.d.ts +0 -51
- package/build/core/mappings/scenarioMappings.d.ts.map +0 -1
- package/build/core/mappings/scenarioMappings.js +0 -105
- package/build/core/mappings/scenarioMappings.js.map +0 -1
- package/build/core/matching/index.d.ts +0 -8
- package/build/core/matching/index.d.ts.map +0 -1
- package/build/core/matching/index.js +0 -8
- package/build/core/matching/index.js.map +0 -1
- package/build/core/matching/intentAnalyzer.d.ts +0 -78
- package/build/core/matching/intentAnalyzer.d.ts.map +0 -1
- package/build/core/matching/intentAnalyzer.js +0 -255
- package/build/core/matching/intentAnalyzer.js.map +0 -1
- package/build/core/matching/standardMatcher.d.ts +0 -101
- package/build/core/matching/standardMatcher.d.ts.map +0 -1
- package/build/core/matching/standardMatcher.js +0 -299
- package/build/core/matching/standardMatcher.js.map +0 -1
- package/build/core/matching/weights.d.ts +0 -64
- package/build/core/matching/weights.d.ts.map +0 -1
- package/build/core/matching/weights.js +0 -334
- package/build/core/matching/weights.js.map +0 -1
- package/build/core/projectContextManager.d.ts +0 -39
- package/build/core/projectContextManager.d.ts.map +0 -1
- package/build/core/projectContextManager.js +0 -147
- package/build/core/projectContextManager.js.map +0 -1
- package/build/core/scenarioDetector.d.ts +0 -2
- package/build/core/scenarioDetector.d.ts.map +0 -1
- package/build/core/scenarioDetector.js +0 -2
- package/build/core/scenarioDetector.js.map +0 -1
- package/build/core/smartAgentMatcher.d.ts +0 -51
- package/build/core/smartAgentMatcher.d.ts.map +0 -1
- package/build/core/smartAgentMatcher.js +0 -493
- package/build/core/smartAgentMatcher.js.map +0 -1
- package/build/core/standardsManager.d.ts +0 -130
- package/build/core/standardsManager.d.ts.map +0 -1
- package/build/core/standardsManager.js +0 -600
- package/build/core/standardsManager.js.map +0 -1
- package/build/core/templates/discovery.d.ts +0 -41
- package/build/core/templates/discovery.d.ts.map +0 -1
- package/build/core/templates/discovery.js +0 -262
- package/build/core/templates/discovery.js.map +0 -1
- package/build/core/templates/types.d.ts +0 -80
- package/build/core/templates/types.d.ts.map +0 -1
- package/build/core/templates/types.js +0 -10
- package/build/core/templates/types.js.map +0 -1
- package/build/core/types.d.ts +0 -57
- package/build/core/types.d.ts.map +0 -1
- package/build/core/types.js +0 -22
- package/build/core/types.js.map +0 -1
- package/build/index.d.ts +0 -3
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -576
- package/build/index.js.map +0 -1
- package/build/tools/analyzeProject.d.ts +0 -12
- package/build/tools/analyzeProject.d.ts.map +0 -1
- package/build/tools/analyzeProject.js +0 -85
- package/build/tools/analyzeProject.js.map +0 -1
- package/build/tools/autoSetup.d.ts +0 -15
- package/build/tools/autoSetup.d.ts.map +0 -1
- package/build/tools/autoSetup.js +0 -291
- package/build/tools/autoSetup.js.map +0 -1
- package/build/tools/generateConfig.d.ts +0 -16
- package/build/tools/generateConfig.d.ts.map +0 -1
- package/build/tools/generateConfig.js +0 -379
- package/build/tools/generateConfig.js.map +0 -1
- package/build/tools/generateProjectAgent.d.ts +0 -15
- package/build/tools/generateProjectAgent.d.ts.map +0 -1
- package/build/tools/generateProjectAgent.js +0 -348
- package/build/tools/generateProjectAgent.js.map +0 -1
- package/build/tools/getCompactStandards.d.ts +0 -20
- package/build/tools/getCompactStandards.d.ts.map +0 -1
- package/build/tools/getCompactStandards.js +0 -367
- package/build/tools/getCompactStandards.js.map +0 -1
- package/build/tools/getSmartStandards.d.ts +0 -15
- package/build/tools/getSmartStandards.d.ts.map +0 -1
- package/build/tools/getSmartStandards.js +0 -201
- package/build/tools/getSmartStandards.js.map +0 -1
- package/build/tools/getStandardById.d.ts +0 -42
- package/build/tools/getStandardById.d.ts.map +0 -1
- package/build/tools/getStandardById.js +0 -289
- package/build/tools/getStandardById.js.map +0 -1
- package/build/tools/getTemplate.d.ts +0 -37
- package/build/tools/getTemplate.d.ts.map +0 -1
- package/build/tools/getTemplate.js +0 -78
- package/build/tools/getTemplate.js.map +0 -1
- package/build/tools/healthCheck.d.ts +0 -14
- package/build/tools/healthCheck.d.ts.map +0 -1
- package/build/tools/healthCheck.js +0 -237
- package/build/tools/healthCheck.js.map +0 -1
- package/build/tools/listAgents.d.ts +0 -10
- package/build/tools/listAgents.d.ts.map +0 -1
- package/build/tools/listAgents.js +0 -79
- package/build/tools/listAgents.js.map +0 -1
- package/build/tools/listTemplates.d.ts +0 -41
- package/build/tools/listTemplates.d.ts.map +0 -1
- package/build/tools/listTemplates.js +0 -81
- package/build/tools/listTemplates.js.map +0 -1
- package/build/tools/matchAgents.d.ts +0 -14
- package/build/tools/matchAgents.d.ts.map +0 -1
- package/build/tools/matchAgents.js +0 -70
- package/build/tools/matchAgents.js.map +0 -1
- package/build/tools/queryMappings.d.ts +0 -55
- package/build/tools/queryMappings.d.ts.map +0 -1
- package/build/tools/queryMappings.js +0 -119
- package/build/tools/queryMappings.js.map +0 -1
- package/build/tools/usePreset.d.ts +0 -23
- package/build/tools/usePreset.d.ts.map +0 -1
- package/build/tools/usePreset.js +0 -163
- package/build/tools/usePreset.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"githubClient.js","sourceRoot":"","sources":["../../src/core/githubClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,OAAO,YAAY;IAOD;IANH,KAAK,GAAG,SAAS,CAAC;IAClB,IAAI,GAAG,iBAAiB,CAAC;IACzB,MAAM,GAAG,MAAM,CAAC;IAChB,OAAO,GAAG,wBAAwB,CAAC;IACnC,UAAU,GAAG,mCAAmC,CAAC;IAElE,YAAoB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEvC;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACpC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,aAAa,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QAEtG,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE;oBACL,QAAQ,EAAE,gCAAgC;oBAC1C,YAAY,EAAE,4BAA4B;iBAC7C;aACJ,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC,CAAC;YACR,CAAC;YAED,OAAO,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACnC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAEvF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE;oBACL,YAAY,EAAE,4BAA4B;iBAC7C;aACJ,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 国际化配置信息
|
|
3
|
-
*/
|
|
4
|
-
export interface I18nConfig {
|
|
5
|
-
enabled: boolean;
|
|
6
|
-
type: 'vue-i18n' | 'flutter-intl' | 'react-i18n' | 'custom' | 'none';
|
|
7
|
-
configFiles: string[];
|
|
8
|
-
messageFiles: string[];
|
|
9
|
-
method: string;
|
|
10
|
-
example: string;
|
|
11
|
-
tips: string[];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* 国际化检测器
|
|
15
|
-
* 支持检测 Vue、Flutter、React 等项目的国际化配置
|
|
16
|
-
*/
|
|
17
|
-
export declare class I18nDetector {
|
|
18
|
-
/**
|
|
19
|
-
* 检测项目的国际化配置
|
|
20
|
-
*/
|
|
21
|
-
static detect(projectPath: string): Promise<I18nConfig>;
|
|
22
|
-
/**
|
|
23
|
-
* 检测前端项目的国际化配置(Vue/React)
|
|
24
|
-
*/
|
|
25
|
-
private static detectFrontendI18n;
|
|
26
|
-
/**
|
|
27
|
-
* 检测 vue-i18n 配置
|
|
28
|
-
*/
|
|
29
|
-
private static detectVueI18n;
|
|
30
|
-
/**
|
|
31
|
-
* 检测 react-i18next 配置
|
|
32
|
-
*/
|
|
33
|
-
private static detectReactI18n;
|
|
34
|
-
/**
|
|
35
|
-
* 检测 react-intl 配置
|
|
36
|
-
*/
|
|
37
|
-
private static detectReactIntl;
|
|
38
|
-
/**
|
|
39
|
-
* 检测自定义国际化方案
|
|
40
|
-
*/
|
|
41
|
-
private static detectCustomI18n;
|
|
42
|
-
/**
|
|
43
|
-
* 检测 Flutter 项目的国际化配置
|
|
44
|
-
*/
|
|
45
|
-
private static detectFlutterI18n;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=i18nDetector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18nDetector.d.ts","sourceRoot":"","sources":["../../src/core/i18nDetector.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;WACU,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB7D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2BjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmD5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAkD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAsE/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAyEnC"}
|
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import glob from 'fast-glob';
|
|
4
|
-
/**
|
|
5
|
-
* 国际化检测器
|
|
6
|
-
* 支持检测 Vue、Flutter、React 等项目的国际化配置
|
|
7
|
-
*/
|
|
8
|
-
export class I18nDetector {
|
|
9
|
-
/**
|
|
10
|
-
* 检测项目的国际化配置
|
|
11
|
-
*/
|
|
12
|
-
static async detect(projectPath) {
|
|
13
|
-
// 检测 package.json(前端项目)
|
|
14
|
-
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
15
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
16
|
-
return this.detectFrontendI18n(projectPath, packageJsonPath);
|
|
17
|
-
}
|
|
18
|
-
// 检测 pubspec.yaml(Flutter 项目)
|
|
19
|
-
const pubspecPath = path.join(projectPath, 'pubspec.yaml');
|
|
20
|
-
if (fs.existsSync(pubspecPath)) {
|
|
21
|
-
return this.detectFlutterI18n(projectPath, pubspecPath);
|
|
22
|
-
}
|
|
23
|
-
// 未检测到国际化
|
|
24
|
-
return {
|
|
25
|
-
enabled: false,
|
|
26
|
-
type: 'none',
|
|
27
|
-
configFiles: [],
|
|
28
|
-
messageFiles: [],
|
|
29
|
-
method: '',
|
|
30
|
-
example: '',
|
|
31
|
-
tips: ['项目未配置国际化,建议添加中英双语支持']
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* 检测前端项目的国际化配置(Vue/React)
|
|
36
|
-
*/
|
|
37
|
-
static detectFrontendI18n(projectPath, packageJsonPath) {
|
|
38
|
-
const content = fs.readFileSync(packageJsonPath, 'utf-8');
|
|
39
|
-
const packageJson = JSON.parse(content);
|
|
40
|
-
const allDeps = {
|
|
41
|
-
...packageJson.dependencies,
|
|
42
|
-
...packageJson.devDependencies
|
|
43
|
-
};
|
|
44
|
-
// 检测 vue-i18n
|
|
45
|
-
if (allDeps['vue-i18n']) {
|
|
46
|
-
return this.detectVueI18n(projectPath);
|
|
47
|
-
}
|
|
48
|
-
// 检测 react-i18next
|
|
49
|
-
if (allDeps['react-i18next'] || allDeps['i18next']) {
|
|
50
|
-
return this.detectReactI18n(projectPath);
|
|
51
|
-
}
|
|
52
|
-
// 检测 react-intl
|
|
53
|
-
if (allDeps['react-intl']) {
|
|
54
|
-
return this.detectReactIntl(projectPath);
|
|
55
|
-
}
|
|
56
|
-
// 检测自定义国际化方案
|
|
57
|
-
return this.detectCustomI18n(projectPath);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* 检测 vue-i18n 配置
|
|
61
|
-
*/
|
|
62
|
-
static detectVueI18n(projectPath) {
|
|
63
|
-
const configFiles = [];
|
|
64
|
-
const messageFiles = [];
|
|
65
|
-
// 查找配置文件
|
|
66
|
-
const possibleConfigPaths = [
|
|
67
|
-
'src/i18n/index.ts',
|
|
68
|
-
'src/i18n/index.js',
|
|
69
|
-
'src/locales/index.ts',
|
|
70
|
-
'src/locales/index.js',
|
|
71
|
-
'i18n.config.ts',
|
|
72
|
-
'i18n.config.js'
|
|
73
|
-
];
|
|
74
|
-
for (const configPath of possibleConfigPaths) {
|
|
75
|
-
const fullPath = path.join(projectPath, configPath);
|
|
76
|
-
if (fs.existsSync(fullPath)) {
|
|
77
|
-
configFiles.push(configPath);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// 查找消息文件
|
|
81
|
-
const possibleMessageDirs = ['src/i18n', 'src/locales', 'src/lang'];
|
|
82
|
-
for (const dir of possibleMessageDirs) {
|
|
83
|
-
const fullDir = path.join(projectPath, dir);
|
|
84
|
-
if (fs.existsSync(fullDir)) {
|
|
85
|
-
const files = fs.readdirSync(fullDir);
|
|
86
|
-
for (const file of files) {
|
|
87
|
-
if (/^(zh|en|ja|ko|fr|de|es).*\.(ts|js|json)$/.test(file)) {
|
|
88
|
-
messageFiles.push(path.join(dir, file));
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
enabled: true,
|
|
95
|
-
type: 'vue-i18n',
|
|
96
|
-
configFiles,
|
|
97
|
-
messageFiles,
|
|
98
|
-
method: '$t()',
|
|
99
|
-
example: `{{ $t('common.save') }} 或 :label="$t('user.username')"`,
|
|
100
|
-
tips: [
|
|
101
|
-
'使用命名空间格式:$t("common.save")',
|
|
102
|
-
'所有按钮、标签、提示文字必须使用 $t()',
|
|
103
|
-
'表单验证规则的 message 也需要国际化',
|
|
104
|
-
'确保 zh-CN.ts 和 en-US.ts 中的键名完全一致'
|
|
105
|
-
]
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* 检测 react-i18next 配置
|
|
110
|
-
*/
|
|
111
|
-
static detectReactI18n(projectPath) {
|
|
112
|
-
const configFiles = [];
|
|
113
|
-
const messageFiles = [];
|
|
114
|
-
// 查找配置文件
|
|
115
|
-
const possibleConfigPaths = [
|
|
116
|
-
'src/i18n.ts',
|
|
117
|
-
'src/i18n.js',
|
|
118
|
-
'src/i18n/config.ts',
|
|
119
|
-
'src/i18n/config.js'
|
|
120
|
-
];
|
|
121
|
-
for (const configPath of possibleConfigPaths) {
|
|
122
|
-
const fullPath = path.join(projectPath, configPath);
|
|
123
|
-
if (fs.existsSync(fullPath)) {
|
|
124
|
-
configFiles.push(configPath);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// 查找翻译文件
|
|
128
|
-
const possibleMessageDirs = ['public/locales', 'src/locales', 'src/i18n'];
|
|
129
|
-
for (const dir of possibleMessageDirs) {
|
|
130
|
-
const fullDir = path.join(projectPath, dir);
|
|
131
|
-
if (fs.existsSync(fullDir)) {
|
|
132
|
-
const pattern = path.join(fullDir, '**/*.json');
|
|
133
|
-
try {
|
|
134
|
-
const files = glob.sync(pattern);
|
|
135
|
-
messageFiles.push(...files.map(f => path.relative(projectPath, f)));
|
|
136
|
-
}
|
|
137
|
-
catch (e) {
|
|
138
|
-
// 忽略错误
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
enabled: true,
|
|
144
|
-
type: 'react-i18n',
|
|
145
|
-
configFiles,
|
|
146
|
-
messageFiles,
|
|
147
|
-
method: 't() 或 useTranslation()',
|
|
148
|
-
example: `{t('common.save')} 或 const { t } = useTranslation()`,
|
|
149
|
-
tips: [
|
|
150
|
-
'使用 useTranslation() hook 获取 t 函数',
|
|
151
|
-
'命名空间格式:t("common.save")',
|
|
152
|
-
'所有文案必须通过 t() 函数包裹',
|
|
153
|
-
'确保所有语言的翻译文件同步更新'
|
|
154
|
-
]
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* 检测 react-intl 配置
|
|
159
|
-
*/
|
|
160
|
-
static detectReactIntl(projectPath) {
|
|
161
|
-
return {
|
|
162
|
-
enabled: true,
|
|
163
|
-
type: 'react-i18n',
|
|
164
|
-
configFiles: [],
|
|
165
|
-
messageFiles: [],
|
|
166
|
-
method: 'formatMessage() 或 FormattedMessage',
|
|
167
|
-
example: `<FormattedMessage id="common.save" /> 或 intl.formatMessage({ id: 'common.save' })`,
|
|
168
|
-
tips: [
|
|
169
|
-
'使用 FormattedMessage 组件或 formatMessage 方法',
|
|
170
|
-
'消息 ID 格式:common.save',
|
|
171
|
-
'所有文案必须定义在消息文件中',
|
|
172
|
-
'确保多语言文件的消息 ID 保持一致'
|
|
173
|
-
]
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 检测自定义国际化方案
|
|
178
|
-
*/
|
|
179
|
-
static detectCustomI18n(projectPath) {
|
|
180
|
-
const messageFiles = [];
|
|
181
|
-
// 查找可能的消息文件
|
|
182
|
-
const possibleDirs = ['src/locales', 'src/i18n', 'src/lang'];
|
|
183
|
-
for (const dir of possibleDirs) {
|
|
184
|
-
const fullDir = path.join(projectPath, dir);
|
|
185
|
-
if (fs.existsSync(fullDir)) {
|
|
186
|
-
const files = fs.readdirSync(fullDir);
|
|
187
|
-
for (const file of files) {
|
|
188
|
-
if (/messages?\.(ts|js)$/i.test(file)) {
|
|
189
|
-
messageFiles.push(path.join(dir, file));
|
|
190
|
-
// 读取文件检测格式
|
|
191
|
-
const content = fs.readFileSync(path.join(fullDir, file), 'utf-8');
|
|
192
|
-
// 检测是否是双语数组格式 [英文, 中文]
|
|
193
|
-
if (content.includes('[') && content.includes('],')) {
|
|
194
|
-
return {
|
|
195
|
-
enabled: true,
|
|
196
|
-
type: 'custom',
|
|
197
|
-
configFiles: [],
|
|
198
|
-
messageFiles,
|
|
199
|
-
method: '$t()',
|
|
200
|
-
example: `{{ $t('保存') }} 或 :label="$t('用户名')"`,
|
|
201
|
-
tips: [
|
|
202
|
-
'使用直接键名格式:$t("保存")',
|
|
203
|
-
'所有按钮、标签、提示文字必须使用 $t()',
|
|
204
|
-
'表单验证规则的 message 也需要国际化',
|
|
205
|
-
'新增文案时需要同时添加中英文翻译'
|
|
206
|
-
]
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// 未检测到国际化配置
|
|
214
|
-
if (messageFiles.length > 0) {
|
|
215
|
-
return {
|
|
216
|
-
enabled: true,
|
|
217
|
-
type: 'custom',
|
|
218
|
-
configFiles: [],
|
|
219
|
-
messageFiles,
|
|
220
|
-
method: '$t()',
|
|
221
|
-
example: '请查看项目中现有页面的使用方式',
|
|
222
|
-
tips: [
|
|
223
|
-
'检测到国际化文件,但格式未知',
|
|
224
|
-
'请查看现有页面确认使用方式',
|
|
225
|
-
'确保所有新增文案都遵循项目规范'
|
|
226
|
-
]
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
return {
|
|
230
|
-
enabled: false,
|
|
231
|
-
type: 'none',
|
|
232
|
-
configFiles: [],
|
|
233
|
-
messageFiles: [],
|
|
234
|
-
method: '',
|
|
235
|
-
example: '',
|
|
236
|
-
tips: [
|
|
237
|
-
'⚠️ 项目未配置国际化',
|
|
238
|
-
'建议添加中英双语支持',
|
|
239
|
-
'推荐使用 vue-i18n(Vue)或 react-i18next(React)'
|
|
240
|
-
]
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* 检测 Flutter 项目的国际化配置
|
|
245
|
-
*/
|
|
246
|
-
static detectFlutterI18n(projectPath, pubspecPath) {
|
|
247
|
-
const content = fs.readFileSync(pubspecPath, 'utf-8');
|
|
248
|
-
// 检测是否配置了 flutter_localizations
|
|
249
|
-
if (content.includes('flutter_localizations')) {
|
|
250
|
-
const messageFiles = [];
|
|
251
|
-
// 查找 .arb 文件
|
|
252
|
-
const l10nDir = path.join(projectPath, 'lib', 'l10n');
|
|
253
|
-
if (fs.existsSync(l10nDir)) {
|
|
254
|
-
const files = fs.readdirSync(l10nDir);
|
|
255
|
-
for (const file of files) {
|
|
256
|
-
if (file.endsWith('.arb')) {
|
|
257
|
-
messageFiles.push(`lib/l10n/${file}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
// 检查是否有 l10n.yaml 配置文件
|
|
262
|
-
const l10nConfigPath = path.join(projectPath, 'l10n.yaml');
|
|
263
|
-
const configFiles = fs.existsSync(l10nConfigPath) ? ['l10n.yaml'] : [];
|
|
264
|
-
return {
|
|
265
|
-
enabled: true,
|
|
266
|
-
type: 'flutter-intl',
|
|
267
|
-
configFiles,
|
|
268
|
-
messageFiles,
|
|
269
|
-
method: 'AppLocalizations',
|
|
270
|
-
example: `AppLocalizations.of(context)!.save 或 S.of(context).save`,
|
|
271
|
-
tips: [
|
|
272
|
-
'使用 AppLocalizations.of(context)!.key',
|
|
273
|
-
'所有文本必须在 .arb 文件中定义',
|
|
274
|
-
'确保 app_en.arb 和 app_zh.arb 的键名完全一致',
|
|
275
|
-
'运行 flutter gen-l10n 生成代码'
|
|
276
|
-
]
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
// 检测 easy_localization
|
|
280
|
-
if (content.includes('easy_localization')) {
|
|
281
|
-
return {
|
|
282
|
-
enabled: true,
|
|
283
|
-
type: 'flutter-intl',
|
|
284
|
-
configFiles: [],
|
|
285
|
-
messageFiles: [],
|
|
286
|
-
method: 'tr()',
|
|
287
|
-
example: `'save'.tr() 或 Text('save'.tr())`,
|
|
288
|
-
tips: [
|
|
289
|
-
'使用 .tr() 扩展方法',
|
|
290
|
-
'翻译文件通常在 assets/translations/',
|
|
291
|
-
'确保所有语言文件的键名一致'
|
|
292
|
-
]
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
// 未检测到国际化配置
|
|
296
|
-
return {
|
|
297
|
-
enabled: false,
|
|
298
|
-
type: 'none',
|
|
299
|
-
configFiles: [],
|
|
300
|
-
messageFiles: [],
|
|
301
|
-
method: '',
|
|
302
|
-
example: '',
|
|
303
|
-
tips: [
|
|
304
|
-
'⚠️ Flutter 项目未配置国际化',
|
|
305
|
-
'建议添加 flutter_localizations',
|
|
306
|
-
'在 pubspec.yaml 中添加:',
|
|
307
|
-
' flutter_localizations:',
|
|
308
|
-
' sdk: flutter',
|
|
309
|
-
' intl: any'
|
|
310
|
-
]
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
//# sourceMappingURL=i18nDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18nDetector.js","sourceRoot":"","sources":["../../src/core/i18nDetector.ts"],"names":[],"mappings":"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"}
|
package/build/core/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core 模块统一导出
|
|
3
|
-
*
|
|
4
|
-
* 提供错误处理、日志、类型等核心功能的统一入口
|
|
5
|
-
*
|
|
6
|
-
* @module core/index
|
|
7
|
-
*/
|
|
8
|
-
export { MCPError, ErrorCode, Errors, errorResponse, safeExecute } from './errors.js';
|
|
9
|
-
export { Logger, LogLevel, logger, createLogger, configureLogger, setLogLevel, createTimer } from './logger.js';
|
|
10
|
-
export { ProjectFeatures, AgentMetadata, GenerationResult, ConsoleLogger } from './types.js';
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACH,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EAChB,MAAM,YAAY,CAAC"}
|
package/build/core/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core 模块统一导出
|
|
3
|
-
*
|
|
4
|
-
* 提供错误处理、日志、类型等核心功能的统一入口
|
|
5
|
-
*
|
|
6
|
-
* @module core/index
|
|
7
|
-
*/
|
|
8
|
-
// 错误处理
|
|
9
|
-
export { MCPError, ErrorCode, Errors, errorResponse, safeExecute } from './errors.js';
|
|
10
|
-
// 日志
|
|
11
|
-
export { Logger, LogLevel, logger, createLogger, configureLogger, setLogLevel, createTimer } from './logger.js';
|
|
12
|
-
// 类型(保持兼容性)
|
|
13
|
-
export { ConsoleLogger } from './types.js';
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/build/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO;AACP,OAAO,EACH,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,KAAK;AACL,OAAO,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,YAAY;AACZ,OAAO,EAIH,aAAa,EAChB,MAAM,YAAY,CAAC"}
|
package/build/core/logger.d.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP 日志模块
|
|
3
|
-
*
|
|
4
|
-
* 统一的日志接口,支持不同级别和格式化输出
|
|
5
|
-
* MCP 服务器通过 stderr 输出日志,避免污染 stdout
|
|
6
|
-
*
|
|
7
|
-
* @module core/logger
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* 日志级别
|
|
11
|
-
*/
|
|
12
|
-
export declare enum LogLevel {
|
|
13
|
-
DEBUG = 0,
|
|
14
|
-
INFO = 1,
|
|
15
|
-
WARN = 2,
|
|
16
|
-
ERROR = 3,
|
|
17
|
-
SILENT = 4
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* 日志配置
|
|
21
|
-
*/
|
|
22
|
-
interface LoggerConfig {
|
|
23
|
-
/** 最小日志级别 */
|
|
24
|
-
level: LogLevel;
|
|
25
|
-
/** 是否显示时间戳 */
|
|
26
|
-
timestamp: boolean;
|
|
27
|
-
/** 前缀 */
|
|
28
|
-
prefix: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Logger 类
|
|
32
|
-
*/
|
|
33
|
-
export declare class Logger {
|
|
34
|
-
private readonly name;
|
|
35
|
-
private readonly config;
|
|
36
|
-
constructor(name?: string, config?: Partial<LoggerConfig>);
|
|
37
|
-
/**
|
|
38
|
-
* 格式化日志消息
|
|
39
|
-
*/
|
|
40
|
-
private format;
|
|
41
|
-
/**
|
|
42
|
-
* 检查日志级别是否应该输出
|
|
43
|
-
*/
|
|
44
|
-
private shouldLog;
|
|
45
|
-
/**
|
|
46
|
-
* 调试日志
|
|
47
|
-
*/
|
|
48
|
-
debug(message: string, ...args: unknown[]): void;
|
|
49
|
-
/**
|
|
50
|
-
* 信息日志
|
|
51
|
-
*/
|
|
52
|
-
info(message: string, ...args: unknown[]): void;
|
|
53
|
-
/**
|
|
54
|
-
* 简化的 log 方法(等同于 info)
|
|
55
|
-
*/
|
|
56
|
-
log(message: string, ...args: unknown[]): void;
|
|
57
|
-
/**
|
|
58
|
-
* 警告日志
|
|
59
|
-
*/
|
|
60
|
-
warn(message: string, ...args: unknown[]): void;
|
|
61
|
-
/**
|
|
62
|
-
* 错误日志
|
|
63
|
-
*/
|
|
64
|
-
error(message: string, ...args: unknown[]): void;
|
|
65
|
-
/**
|
|
66
|
-
* 创建子 Logger
|
|
67
|
-
*/
|
|
68
|
-
child(name: string): Logger;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* 配置全局日志
|
|
72
|
-
*/
|
|
73
|
-
export declare function configureLogger(config: Partial<LoggerConfig>): void;
|
|
74
|
-
/**
|
|
75
|
-
* 设置日志级别
|
|
76
|
-
*/
|
|
77
|
-
export declare function setLogLevel(level: LogLevel): void;
|
|
78
|
-
/**
|
|
79
|
-
* 默认 Logger 实例
|
|
80
|
-
*/
|
|
81
|
-
export declare const logger: Logger;
|
|
82
|
-
/**
|
|
83
|
-
* 创建带名称的 Logger
|
|
84
|
-
*/
|
|
85
|
-
export declare function createLogger(name: string): Logger;
|
|
86
|
-
/**
|
|
87
|
-
* 工具函数:计时日志
|
|
88
|
-
*/
|
|
89
|
-
export declare function createTimer(logger: Logger, operation: string): () => void;
|
|
90
|
-
export {};
|
|
91
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,MAAM,IAAI;CACb;AAaD;;GAEG;AACH,UAAU,YAAY;IAClB,aAAa;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;CAClB;AAWD;;GAEG;AACH,qBAAa,MAAM;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAKzD;;OAEG;IACH,OAAO,CAAC,MAAM;IAkCd;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAI9B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,IAAI,CAQzE"}
|
package/build/core/logger.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP 日志模块
|
|
3
|
-
*
|
|
4
|
-
* 统一的日志接口,支持不同级别和格式化输出
|
|
5
|
-
* MCP 服务器通过 stderr 输出日志,避免污染 stdout
|
|
6
|
-
*
|
|
7
|
-
* @module core/logger
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* 日志级别
|
|
11
|
-
*/
|
|
12
|
-
export var LogLevel;
|
|
13
|
-
(function (LogLevel) {
|
|
14
|
-
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
15
|
-
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
16
|
-
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
17
|
-
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
18
|
-
LogLevel[LogLevel["SILENT"] = 4] = "SILENT";
|
|
19
|
-
})(LogLevel || (LogLevel = {}));
|
|
20
|
-
/**
|
|
21
|
-
* 日志级别名称
|
|
22
|
-
*/
|
|
23
|
-
const LOG_LEVEL_NAMES = {
|
|
24
|
-
[LogLevel.DEBUG]: 'DEBUG',
|
|
25
|
-
[LogLevel.INFO]: 'INFO',
|
|
26
|
-
[LogLevel.WARN]: 'WARN',
|
|
27
|
-
[LogLevel.ERROR]: 'ERROR',
|
|
28
|
-
[LogLevel.SILENT]: 'SILENT'
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* 全局日志配置
|
|
32
|
-
*/
|
|
33
|
-
let globalConfig = {
|
|
34
|
-
level: process.env.DEBUG ? LogLevel.DEBUG : LogLevel.INFO,
|
|
35
|
-
timestamp: false,
|
|
36
|
-
prefix: '[MCP]'
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Logger 类
|
|
40
|
-
*/
|
|
41
|
-
export class Logger {
|
|
42
|
-
name;
|
|
43
|
-
config;
|
|
44
|
-
constructor(name, config) {
|
|
45
|
-
this.name = name || '';
|
|
46
|
-
this.config = { ...globalConfig, ...config };
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 格式化日志消息
|
|
50
|
-
*/
|
|
51
|
-
format(level, message, ...args) {
|
|
52
|
-
const parts = [];
|
|
53
|
-
if (this.config.timestamp) {
|
|
54
|
-
parts.push(new Date().toISOString());
|
|
55
|
-
}
|
|
56
|
-
parts.push(this.config.prefix);
|
|
57
|
-
if (this.name) {
|
|
58
|
-
parts.push(`[${this.name}]`);
|
|
59
|
-
}
|
|
60
|
-
parts.push(`[${LOG_LEVEL_NAMES[level]}]`);
|
|
61
|
-
parts.push(message);
|
|
62
|
-
// 处理额外参数
|
|
63
|
-
if (args.length > 0) {
|
|
64
|
-
const formatted = args.map(arg => {
|
|
65
|
-
if (typeof arg === 'object') {
|
|
66
|
-
try {
|
|
67
|
-
return JSON.stringify(arg, null, 2);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return String(arg);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return String(arg);
|
|
74
|
-
});
|
|
75
|
-
parts.push(...formatted);
|
|
76
|
-
}
|
|
77
|
-
return parts.join(' ');
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 检查日志级别是否应该输出
|
|
81
|
-
*/
|
|
82
|
-
shouldLog(level) {
|
|
83
|
-
return level >= this.config.level;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 调试日志
|
|
87
|
-
*/
|
|
88
|
-
debug(message, ...args) {
|
|
89
|
-
if (this.shouldLog(LogLevel.DEBUG)) {
|
|
90
|
-
console.error(this.format(LogLevel.DEBUG, message, ...args));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* 信息日志
|
|
95
|
-
*/
|
|
96
|
-
info(message, ...args) {
|
|
97
|
-
if (this.shouldLog(LogLevel.INFO)) {
|
|
98
|
-
console.error(this.format(LogLevel.INFO, message, ...args));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* 简化的 log 方法(等同于 info)
|
|
103
|
-
*/
|
|
104
|
-
log(message, ...args) {
|
|
105
|
-
this.info(message, ...args);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* 警告日志
|
|
109
|
-
*/
|
|
110
|
-
warn(message, ...args) {
|
|
111
|
-
if (this.shouldLog(LogLevel.WARN)) {
|
|
112
|
-
console.error(this.format(LogLevel.WARN, message, ...args));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* 错误日志
|
|
117
|
-
*/
|
|
118
|
-
error(message, ...args) {
|
|
119
|
-
if (this.shouldLog(LogLevel.ERROR)) {
|
|
120
|
-
console.error(this.format(LogLevel.ERROR, message, ...args));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* 创建子 Logger
|
|
125
|
-
*/
|
|
126
|
-
child(name) {
|
|
127
|
-
const childName = this.name ? `${this.name}:${name}` : name;
|
|
128
|
-
return new Logger(childName, this.config);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* 配置全局日志
|
|
133
|
-
*/
|
|
134
|
-
export function configureLogger(config) {
|
|
135
|
-
globalConfig = { ...globalConfig, ...config };
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* 设置日志级别
|
|
139
|
-
*/
|
|
140
|
-
export function setLogLevel(level) {
|
|
141
|
-
globalConfig.level = level;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* 默认 Logger 实例
|
|
145
|
-
*/
|
|
146
|
-
export const logger = new Logger();
|
|
147
|
-
/**
|
|
148
|
-
* 创建带名称的 Logger
|
|
149
|
-
*/
|
|
150
|
-
export function createLogger(name) {
|
|
151
|
-
return new Logger(name);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* 工具函数:计时日志
|
|
155
|
-
*/
|
|
156
|
-
export function createTimer(logger, operation) {
|
|
157
|
-
const start = Date.now();
|
|
158
|
-
logger.debug(`开始: ${operation}`);
|
|
159
|
-
return () => {
|
|
160
|
-
const duration = Date.now() - start;
|
|
161
|
-
logger.debug(`完成: ${operation} (${duration}ms)`);
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=logger.js.map
|