code-gate 0.1.0 → 1.0.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/LICENSE +21 -0
- package/README.md +222 -114
- package/README_ZH.md +224 -0
- package/bin/code-gate.js +12 -19
- package/dist/__tests__/config.test.js +1 -1
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/render.test.js +24 -7
- package/dist/__tests__/render.test.js.map +1 -1
- package/dist/cli/commands/hook.d.ts +1 -0
- package/dist/cli/commands/hook.js +164 -0
- package/dist/cli/commands/hook.js.map +1 -0
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.js +157 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +1 -0
- package/dist/cli/commands/setup.js +19 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/hook.js +7 -0
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/init.js +20 -20
- package/dist/config/defaults.d.ts +2 -0
- package/dist/config/defaults.js +33 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.js +77 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +55 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config.d.ts +111 -21
- package/dist/config.js +83 -21
- package/dist/config.js.map +1 -1
- package/dist/core/git.d.ts +7 -0
- package/dist/core/git.js +67 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/review-flow.js +105 -59
- package/dist/core/review-flow.js.map +1 -1
- package/dist/core/review.d.ts +6 -0
- package/dist/core/review.js +167 -0
- package/dist/core/review.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/base.d.ts +14 -0
- package/dist/llm/base.js +10 -0
- package/dist/llm/base.js.map +1 -0
- package/dist/llm/deepseek.js +3 -3
- package/dist/llm/deepseek.js.map +1 -1
- package/dist/llm/index.d.ts +4 -0
- package/dist/llm/index.js +41 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/ollama.js +2 -2
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/providers/aliyun.d.ts +4 -0
- package/dist/llm/providers/aliyun.js +25 -0
- package/dist/llm/providers/aliyun.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +4 -0
- package/dist/llm/providers/anthropic.js +52 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/azure.d.ts +4 -0
- package/dist/llm/providers/azure.js +38 -0
- package/dist/llm/providers/azure.js.map +1 -0
- package/dist/llm/providers/cohere.d.ts +4 -0
- package/dist/llm/providers/cohere.js +39 -0
- package/dist/llm/providers/cohere.js.map +1 -0
- package/dist/llm/providers/deepseek.d.ts +4 -0
- package/dist/llm/providers/deepseek.js +25 -0
- package/dist/llm/providers/deepseek.js.map +1 -0
- package/dist/llm/providers/gemini.d.ts +4 -0
- package/dist/llm/providers/gemini.js +40 -0
- package/dist/llm/providers/gemini.js.map +1 -0
- package/dist/llm/providers/mistral.d.ts +4 -0
- package/dist/llm/providers/mistral.js +42 -0
- package/dist/llm/providers/mistral.js.map +1 -0
- package/dist/llm/providers/ollama.d.ts +5 -0
- package/dist/llm/providers/ollama.js +67 -0
- package/dist/llm/providers/ollama.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +4 -0
- package/dist/llm/providers/openai.js +27 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/providers/volcengine.d.ts +4 -0
- package/dist/llm/providers/volcengine.js +29 -0
- package/dist/llm/providers/volcengine.js.map +1 -0
- package/dist/llm/providers/zhipu.d.ts +4 -0
- package/dist/llm/providers/zhipu.js +25 -0
- package/dist/llm/providers/zhipu.js.map +1 -0
- package/dist/locales/de.d.ts +2 -0
- package/dist/locales/de.js +33 -0
- package/dist/locales/de.js.map +1 -0
- package/dist/locales/en.d.ts +2 -0
- package/dist/locales/en.js +33 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/fr.d.ts +2 -0
- package/dist/locales/fr.js +33 -0
- package/dist/locales/fr.js.map +1 -0
- package/dist/locales/index.d.ts +3 -0
- package/dist/locales/index.js +41 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/ja.d.ts +2 -0
- package/dist/locales/ja.js +33 -0
- package/dist/locales/ja.js.map +1 -0
- package/dist/locales/ko.d.ts +2 -0
- package/dist/locales/ko.js +33 -0
- package/dist/locales/ko.js.map +1 -0
- package/dist/locales/types.d.ts +32 -0
- package/dist/locales/types.js +2 -0
- package/dist/locales/types.js.map +1 -0
- package/dist/locales/zh-CN.d.ts +2 -0
- package/dist/locales/zh-CN.js +33 -0
- package/dist/locales/zh-CN.js.map +1 -0
- package/dist/locales/zh-TW.d.ts +2 -0
- package/dist/locales/zh-TW.js +33 -0
- package/dist/locales/zh-TW.js.map +1 -0
- package/dist/ui/render/assets.d.ts +8 -0
- package/dist/ui/render/assets.js +89 -0
- package/dist/ui/render/assets.js.map +1 -0
- package/dist/ui/render/html.d.ts +35 -0
- package/dist/ui/render/html.js +294 -0
- package/dist/ui/render/html.js.map +1 -0
- package/dist/ui/render.d.ts +11 -0
- package/dist/ui/render.js +198 -13
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/server.d.ts +4 -2
- package/dist/ui/server.js +30 -8
- package/dist/ui/server.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.js +10 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +27 -8
- package/scripts/hook.sh +12 -0
package/dist/ui/server.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import { Config } from '../config.js';
|
|
2
|
-
export declare function serveReview(cfg: Config, html: string): Promise<string>;
|
|
1
|
+
import { Config } from '../config/index.js';
|
|
2
|
+
export declare function serveReview(cfg: Config, html: string, id: string, getStatus?: () => any, openNow?: boolean): Promise<string>;
|
|
3
|
+
export declare function saveOutput(cfg: Config, id: string, html: string): void;
|
|
4
|
+
export declare function triggerOpen(url: string): void;
|
package/dist/ui/server.js
CHANGED
|
@@ -3,25 +3,31 @@ import os from 'node:os';
|
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { spawn } from 'node:child_process';
|
|
6
|
-
export async function serveReview(cfg, html) {
|
|
6
|
+
export async function serveReview(cfg, html, id, getStatus, openNow) {
|
|
7
7
|
const port = cfg.ui?.port ?? 5175;
|
|
8
|
-
const
|
|
9
|
-
const id = Date.now().toString(36);
|
|
8
|
+
const openCfg = cfg.ui?.openBrowser ?? true;
|
|
10
9
|
const route = `/review/${id}`;
|
|
11
10
|
const server = http.createServer((req, res) => {
|
|
12
|
-
|
|
11
|
+
const u = (req.url || '').split('?')[0];
|
|
12
|
+
if (u === route || u === `${route}/`) {
|
|
13
13
|
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
|
14
14
|
res.end(html);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
+
if (u === `${route}/status` && getStatus) {
|
|
18
|
+
const body = JSON.stringify(getStatus() || {});
|
|
19
|
+
res.setHeader('Content-Type', 'application/json; charset=utf-8');
|
|
20
|
+
res.end(body);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
17
23
|
res.statusCode = 404;
|
|
18
24
|
res.end('Not Found');
|
|
19
25
|
});
|
|
20
26
|
return new Promise((resolve) => {
|
|
21
27
|
server.listen(port, () => {
|
|
22
28
|
const url = `http://localhost:${port}${route}`;
|
|
23
|
-
|
|
24
|
-
if (
|
|
29
|
+
const shouldOpen = typeof openNow === 'boolean' ? openNow : openCfg;
|
|
30
|
+
if (shouldOpen)
|
|
25
31
|
openBrowser(url);
|
|
26
32
|
server.unref();
|
|
27
33
|
resolve(url);
|
|
@@ -30,13 +36,26 @@ export async function serveReview(cfg, html) {
|
|
|
30
36
|
const p = path.join(os.tmpdir(), `code-gate-${id}.html`);
|
|
31
37
|
fs.writeFileSync(p, html, 'utf8');
|
|
32
38
|
const url = `file://${p}`;
|
|
33
|
-
|
|
34
|
-
if (
|
|
39
|
+
const shouldOpen = typeof openNow === 'boolean' ? openNow : openCfg;
|
|
40
|
+
if (shouldOpen)
|
|
35
41
|
openBrowser(url);
|
|
36
42
|
resolve(url);
|
|
37
43
|
});
|
|
38
44
|
});
|
|
39
45
|
}
|
|
46
|
+
export function saveOutput(cfg, id, html) {
|
|
47
|
+
try {
|
|
48
|
+
const outDir = (cfg.output?.dir && cfg.output.dir.trim()) || '.review-logs';
|
|
49
|
+
const p = path.join(process.cwd(), outDir);
|
|
50
|
+
fs.mkdirSync(p, { recursive: true });
|
|
51
|
+
const fp = path.join(p, `review-${id}.html`);
|
|
52
|
+
fs.writeFileSync(fp, html, 'utf8');
|
|
53
|
+
// process.stdout.write(`已保存审查页面:${fp}\n`)
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
// process.stderr.write(`保存审查页面失败:${(e as any)?.message || e}\n`)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
40
59
|
function openBrowser(url) {
|
|
41
60
|
const platform = process.platform;
|
|
42
61
|
if (platform === 'darwin')
|
|
@@ -46,4 +65,7 @@ function openBrowser(url) {
|
|
|
46
65
|
else
|
|
47
66
|
spawn('xdg-open', [url], { stdio: 'ignore', detached: true });
|
|
48
67
|
}
|
|
68
|
+
export function triggerOpen(url) {
|
|
69
|
+
openBrowser(url);
|
|
70
|
+
}
|
|
49
71
|
//# sourceMappingURL=server.js.map
|
package/dist/ui/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,MAAM,CAAC,KAAK,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-gate",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Intelligent Git commit guard and code reviewer. Supports local (Ollama) and cloud models (DeepSeek, OpenAI, Anthropic, etc.) with a rich CLI UI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"code-gate": "bin/code-gate.js"
|
|
7
|
+
"code-gate": "bin/code-gate.js",
|
|
8
|
+
"code-gate-hook": "scripts/hook.sh"
|
|
8
9
|
},
|
|
9
10
|
"main": "dist/index.js",
|
|
10
11
|
"files": [
|
|
11
12
|
"dist",
|
|
12
13
|
"bin",
|
|
13
|
-
"
|
|
14
|
+
"scripts",
|
|
15
|
+
"README.md",
|
|
16
|
+
"README_ZH.md",
|
|
17
|
+
"LICENSE"
|
|
14
18
|
],
|
|
15
19
|
"keywords": [
|
|
16
20
|
"git",
|
|
@@ -20,17 +24,21 @@
|
|
|
20
24
|
"Ollama",
|
|
21
25
|
"diff2html"
|
|
22
26
|
],
|
|
27
|
+
"author": "Gil",
|
|
23
28
|
"license": "MIT",
|
|
24
29
|
"repository": {
|
|
25
30
|
"type": "git",
|
|
26
|
-
"url": "https://
|
|
31
|
+
"url": "https://github.com/Gil2015/code-gate.git"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/Gil2015/code-gate#readme",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/Gil2015/code-gate/issues"
|
|
27
36
|
},
|
|
28
37
|
"scripts": {
|
|
29
38
|
"build": "tsc -p tsconfig.json",
|
|
30
39
|
"build:watch": "tsc -w -p tsconfig.json",
|
|
31
40
|
"clean": "rimraf dist",
|
|
32
41
|
"dev": "node --enable-source-maps dist/cli.js",
|
|
33
|
-
"setup": "node --enable-source-maps dist/commands/setup.js",
|
|
34
42
|
"hook": "node --enable-source-maps dist/commands/hook.js",
|
|
35
43
|
"prepare": "npm run build"
|
|
36
44
|
},
|
|
@@ -38,15 +46,26 @@
|
|
|
38
46
|
"node": ">=18"
|
|
39
47
|
},
|
|
40
48
|
"dependencies": {
|
|
49
|
+
"@clack/prompts": "^0.11.0",
|
|
41
50
|
"commander": "^12.1.0",
|
|
42
51
|
"diff2html": "^3.4.47",
|
|
52
|
+
"dompurify": "^3.3.1",
|
|
53
|
+
"dotenv": "^17.2.3",
|
|
43
54
|
"highlight.js": "^11.9.0",
|
|
55
|
+
"jsdom": "^27.0.1",
|
|
56
|
+
"marked": "^17.0.1",
|
|
57
|
+
"micromatch": "^4.0.8",
|
|
44
58
|
"openai": "^4.60.0",
|
|
59
|
+
"picocolors": "^1.1.1",
|
|
45
60
|
"yaml": "^2.6.0"
|
|
46
61
|
},
|
|
47
62
|
"devDependencies": {
|
|
63
|
+
"@types/dompurify": "^3.0.5",
|
|
64
|
+
"@types/jsdom": "^27.0.0",
|
|
65
|
+
"@types/marked": "^5.0.2",
|
|
66
|
+
"@types/micromatch": "^4.0.10",
|
|
48
67
|
"@types/node": "^22.7.5",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
68
|
+
"rimraf": "^6.0.1",
|
|
69
|
+
"typescript": "^5.6.3"
|
|
51
70
|
}
|
|
52
71
|
}
|
package/scripts/hook.sh
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
# Code Gate Hook Loader
|
|
3
|
+
# 智能探测并执行 code-gate hook 命令
|
|
4
|
+
# 优先级: 本地安装 -> 全局安装 -> npx 缓存 -> npx 下载
|
|
5
|
+
|
|
6
|
+
if [ -f "./node_modules/.bin/code-gate" ]; then
|
|
7
|
+
exec ./node_modules/.bin/code-gate hook "$@"
|
|
8
|
+
elif command -v code-gate >/dev/null 2>&1; then
|
|
9
|
+
exec code-gate hook "$@"
|
|
10
|
+
else
|
|
11
|
+
exec npx --no-install code-gate hook "$@" || exec npx code-gate hook "$@"
|
|
12
|
+
fi
|