personalac 1.4.7 → 1.4.8
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/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/routes/oauth.routes.d.ts +3 -0
- package/dist/routes/oauth.routes.d.ts.map +1 -0
- package/dist/routes/oauth.routes.js +91 -0
- package/dist/routes/oauth.routes.js.map +1 -0
- package/dist/services/oauth.service.d.ts +20 -0
- package/dist/services/oauth.service.d.ts.map +1 -0
- package/dist/services/oauth.service.js +219 -0
- package/dist/services/oauth.service.js.map +1 -0
- package/package.json +1 -1
- package/public/assets/{_baseUniq-BUjPUno3.js → _baseUniq-BjH6Ha2t.js} +1 -1
- package/public/assets/{arc-DpusTbKo.js → arc-CthW4XSM.js} +1 -1
- package/public/assets/{architectureDiagram-Q4EWVU46-DxfzLTZt.js → architectureDiagram-Q4EWVU46-84pLPqc9.js} +1 -1
- package/public/assets/{blockDiagram-DXYQGD6D-Ddvf4G7V.js → blockDiagram-DXYQGD6D-S0WKInPW.js} +1 -1
- package/public/assets/{c4Diagram-AHTNJAMY-3v8B-o3q.js → c4Diagram-AHTNJAMY-DCw5Tp3x.js} +1 -1
- package/public/assets/channel-Bye_jOCG.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-H_3-H-Br.js → chunk-4BX2VUAB-Bl6M0B0o.js} +1 -1
- package/public/assets/{chunk-4TB4RGXK-BLKoLCDw.js → chunk-4TB4RGXK-jNNlshuG.js} +1 -1
- package/public/assets/{chunk-55IACEB6-DLg_EGBP.js → chunk-55IACEB6-B8DAO4mM.js} +1 -1
- package/public/assets/{chunk-EDXVE4YY-DNTB-cml.js → chunk-EDXVE4YY-AcJNtOHq.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-KEMvqB1P.js → chunk-FMBD7UC4-DWUAdz50.js} +1 -1
- package/public/assets/{chunk-OYMX7WX6-Bk6s6pS-.js → chunk-OYMX7WX6-CTYYxj8X.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-j9h-R9kP.js → chunk-QZHKN3VN-YXCJYAVy.js} +1 -1
- package/public/assets/{chunk-YZCP3GAM-CLM0UTUV.js → chunk-YZCP3GAM-Bg94jlAf.js} +1 -1
- package/public/assets/classDiagram-6PBFFD2Q-CLsw_eQd.js +1 -0
- package/public/assets/classDiagram-v2-HSJHXN6E-CLsw_eQd.js +1 -0
- package/public/assets/clone-D8FMpd61.js +1 -0
- package/public/assets/{cose-bilkent-S5V4N54A-Dp9Wp6nq.js → cose-bilkent-S5V4N54A-CT5iU-I_.js} +1 -1
- package/public/assets/{dagre-KV5264BT-CeYZA6Eh.js → dagre-KV5264BT-C8UOh9bz.js} +1 -1
- package/public/assets/{diagram-5BDNPKRD-EiblI4S_.js → diagram-5BDNPKRD-Dln4x7ex.js} +1 -1
- package/public/assets/{diagram-G4DWMVQ6-Dsajlr3V.js → diagram-G4DWMVQ6-DHH0_881.js} +1 -1
- package/public/assets/{diagram-MMDJMWI5-dy-W4DGg.js → diagram-MMDJMWI5-B2zLbKSi.js} +1 -1
- package/public/assets/{diagram-TYMM5635-D3eSmiZp.js → diagram-TYMM5635-BI0fmMbC.js} +1 -1
- package/public/assets/{erDiagram-SMLLAGMA-Dd2XgIok.js → erDiagram-SMLLAGMA-CoDa-HEh.js} +1 -1
- package/public/assets/{flowDiagram-DWJPFMVM-Bbk93w6w.js → flowDiagram-DWJPFMVM-RoL8r18K.js} +1 -1
- package/public/assets/{ganttDiagram-T4ZO3ILL-LgsAY_DZ.js → ganttDiagram-T4ZO3ILL-CSvA3nAR.js} +1 -1
- package/public/assets/{gitGraphDiagram-UUTBAWPF-DPAMYupQ.js → gitGraphDiagram-UUTBAWPF-DqMHMIWH.js} +1 -1
- package/public/assets/{graph-CoeRJrl1.js → graph-BjC7TY_c.js} +1 -1
- package/public/assets/{index-CtPXtGtU.js → index-BlFfFspX.js} +112 -112
- package/public/assets/{infoDiagram-42DDH7IO-WRAP6VzM.js → infoDiagram-42DDH7IO-DfO7QUPU.js} +1 -1
- package/public/assets/{ishikawaDiagram-UXIWVN3A-BONgeVRT.js → ishikawaDiagram-UXIWVN3A-36-P7vue.js} +1 -1
- package/public/assets/{journeyDiagram-VCZTEJTY-qTpIQVa-.js → journeyDiagram-VCZTEJTY-BE1e2QFE.js} +1 -1
- package/public/assets/{kanban-definition-6JOO6SKY-CzYI-mWW.js → kanban-definition-6JOO6SKY-3lY4IkJS.js} +1 -1
- package/public/assets/{layout-Dpa7UTxK.js → layout-DVixObfK.js} +1 -1
- package/public/assets/{linear-DI9UUWXE.js → linear-DlV2-cBd.js} +1 -1
- package/public/assets/{min-CN6QpsCL.js → min-BpS0hR56.js} +1 -1
- package/public/assets/{mindmap-definition-QFDTVHPH-AIvhr-rx.js → mindmap-definition-QFDTVHPH-OMfKNpKW.js} +1 -1
- package/public/assets/{pieDiagram-DEJITSTG-CNynLc-T.js → pieDiagram-DEJITSTG-C6ynawiU.js} +1 -1
- package/public/assets/{quadrantDiagram-34T5L4WZ-BfUYDHEz.js → quadrantDiagram-34T5L4WZ-Nb18_YYq.js} +1 -1
- package/public/assets/{requirementDiagram-MS252O5E-Dfu2QUbN.js → requirementDiagram-MS252O5E-DBZ_vHYN.js} +1 -1
- package/public/assets/{sankeyDiagram-XADWPNL6-C-LyLmEd.js → sankeyDiagram-XADWPNL6-BhLEqXEL.js} +1 -1
- package/public/assets/{sequenceDiagram-FGHM5R23-CSFgOfvA.js → sequenceDiagram-FGHM5R23-_nlrzldJ.js} +1 -1
- package/public/assets/{stateDiagram-FHFEXIEX-YCfokhwP.js → stateDiagram-FHFEXIEX-mD4Ie1v3.js} +1 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-ropa5YHP.js +1 -0
- package/public/assets/{timeline-definition-GMOUNBTQ-BSctlYWQ.js → timeline-definition-GMOUNBTQ-DzxnMPkG.js} +1 -1
- package/public/assets/{vennDiagram-DHZGUBPP-Ck5dIGcf.js → vennDiagram-DHZGUBPP-DfJqbr2m.js} +1 -1
- package/public/assets/{wardley-RL74JXVD-BJsYpN2B.js → wardley-RL74JXVD-GA_E0Opl.js} +1 -1
- package/public/assets/{wardleyDiagram-NUSXRM2D-CEnC7Nva.js → wardleyDiagram-NUSXRM2D-Bkuk03EL.js} +1 -1
- package/public/assets/{xychartDiagram-5P7HB3ND-DrgW-fZM.js → xychartDiagram-5P7HB3ND-CSRpbg1l.js} +1 -1
- package/public/index.html +1 -1
- package/public/assets/channel-DnqtKNaA.js +0 -1
- package/public/assets/classDiagram-6PBFFD2Q-BeTpodcT.js +0 -1
- package/public/assets/classDiagram-v2-HSJHXN6E-BeTpodcT.js +0 -1
- package/public/assets/clone-Bf1qUYsB.js +0 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-Dh-gkD9n.js +0 -1
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ const workspace_routes_1 = __importDefault(require("./routes/workspace.routes"))
|
|
|
23
23
|
const goals_routes_1 = __importDefault(require("./routes/goals.routes"));
|
|
24
24
|
const todo_routes_1 = __importDefault(require("./routes/todo.routes"));
|
|
25
25
|
const relay_routes_1 = __importDefault(require("./routes/relay.routes"));
|
|
26
|
+
const oauth_routes_1 = __importDefault(require("./routes/oauth.routes"));
|
|
26
27
|
const PORT = Number(process.env.PORT) || 3000;
|
|
27
28
|
const app = (0, express_1.default)();
|
|
28
29
|
app.use((0, cors_1.default)({ origin: process.env.CORS_ORIGIN || 'http://localhost:5173', credentials: true }));
|
|
@@ -96,6 +97,7 @@ app.use('/api/workspace', workspace_routes_1.default);
|
|
|
96
97
|
app.use('/api/goals', goals_routes_1.default);
|
|
97
98
|
app.use('/api/todo', todo_routes_1.default);
|
|
98
99
|
app.use('/api/relay', relay_routes_1.default);
|
|
100
|
+
app.use('/api/oauth', oauth_routes_1.default);
|
|
99
101
|
// 前端 SPA fallback
|
|
100
102
|
app.get('*', (_req, res) => {
|
|
101
103
|
res.sendFile(path_1.default.join(frontendDist, 'index.html'), (err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.routes.d.ts","sourceRoot":"","sources":["../../src/routes/oauth.routes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,4CAAW,CAAA;AAiGvB,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const oauth_service_1 = require("../services/oauth.service");
|
|
5
|
+
const auth_middleware_1 = require("../middleware/auth.middleware");
|
|
6
|
+
const router = (0, express_1.Router)();
|
|
7
|
+
// ── Anthropic PKCE redirect flow ──────────────────────────────────────────
|
|
8
|
+
// /start — 不需要 requireAuth(会在浏览器新窗口中打开,可能未携带 cookie)
|
|
9
|
+
// 但需要防止随意触发,用一个简单的 query secret(登录后前端持有 syncToken)
|
|
10
|
+
router.get('/anthropic/start', (req, res) => {
|
|
11
|
+
const host = `${req.protocol}://${req.get('host')}`;
|
|
12
|
+
const redirectUri = `${host}/api/oauth/anthropic/callback`;
|
|
13
|
+
const { url } = (0, oauth_service_1.startAnthropicOAuth)(redirectUri);
|
|
14
|
+
res.redirect(url);
|
|
15
|
+
});
|
|
16
|
+
router.get('/anthropic/callback', async (req, res) => {
|
|
17
|
+
const { code, state, error: oauthError } = req.query;
|
|
18
|
+
if (oauthError) {
|
|
19
|
+
res.send(callbackPage('error', `Anthropic 拒绝授权:${oauthError}`));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!code || !state) {
|
|
23
|
+
res.send(callbackPage('error', '缺少 code 或 state 参数'));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const host = `${req.protocol}://${req.get('host')}`;
|
|
27
|
+
const redirectUri = `${host}/api/oauth/anthropic/callback`;
|
|
28
|
+
const result = await (0, oauth_service_1.handleAnthropicCallback)(code, state, redirectUri);
|
|
29
|
+
if (result.success) {
|
|
30
|
+
res.send(callbackPage('success', 'Claude 账号授权成功!API Key 已保存。', 'anthropic'));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
res.send(callbackPage('error', result.error || '授权失败'));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
// ── OpenAI Device Code flow ───────────────────────────────────────────────
|
|
37
|
+
router.post('/openai/start', auth_middleware_1.requireAuth, async (_req, res) => {
|
|
38
|
+
const result = await (0, oauth_service_1.startOpenAIDeviceCode)();
|
|
39
|
+
res.json(result);
|
|
40
|
+
});
|
|
41
|
+
router.get('/openai/status/:flowId', auth_middleware_1.requireAuth, (req, res) => {
|
|
42
|
+
const { flowId } = req.params;
|
|
43
|
+
res.json((0, oauth_service_1.getOpenAIFlowStatus)(flowId));
|
|
44
|
+
});
|
|
45
|
+
// ── Callback page HTML ────────────────────────────────────────────────────
|
|
46
|
+
function callbackPage(type, message, provider) {
|
|
47
|
+
const isOk = type === 'success';
|
|
48
|
+
const color = isOk ? '#16a34a' : '#dc2626';
|
|
49
|
+
const icon = isOk ? '✓' : '✗';
|
|
50
|
+
const postMsg = isOk && provider
|
|
51
|
+
? `<script>
|
|
52
|
+
try {
|
|
53
|
+
if (window.opener) {
|
|
54
|
+
window.opener.postMessage({ type: 'oauth_complete', provider: '${provider}' }, '*');
|
|
55
|
+
}
|
|
56
|
+
} catch(e) {}
|
|
57
|
+
setTimeout(() => { try { window.close() } catch(e) {} }, 1800);
|
|
58
|
+
</script>`
|
|
59
|
+
: '';
|
|
60
|
+
return `<!DOCTYPE html>
|
|
61
|
+
<html lang="zh">
|
|
62
|
+
<head>
|
|
63
|
+
<meta charset="utf-8">
|
|
64
|
+
<title>${isOk ? '授权成功' : '授权失败'}</title>
|
|
65
|
+
<style>
|
|
66
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
67
|
+
body { font-family: -apple-system, system-ui, sans-serif; background: #f9f7f4;
|
|
68
|
+
display: flex; align-items: center; justify-content: center; min-height: 100vh; }
|
|
69
|
+
.card { background: #fff; border: 1px solid #e5e2de; border-radius: 12px;
|
|
70
|
+
padding: 40px 48px; text-align: center; max-width: 400px; }
|
|
71
|
+
.icon { width: 56px; height: 56px; border-radius: 50%; background: ${color}20;
|
|
72
|
+
display: flex; align-items: center; justify-content: center;
|
|
73
|
+
font-size: 24px; color: ${color}; margin: 0 auto 20px; }
|
|
74
|
+
h2 { font-size: 20px; font-weight: 600; color: #1a1815; margin-bottom: 8px; }
|
|
75
|
+
p { font-size: 14px; color: #6b7280; line-height: 1.5; }
|
|
76
|
+
.close { margin-top: 24px; font-size: 12px; color: #9ca3af; }
|
|
77
|
+
</style>
|
|
78
|
+
</head>
|
|
79
|
+
<body>
|
|
80
|
+
<div class="card">
|
|
81
|
+
<div class="icon">${icon}</div>
|
|
82
|
+
<h2>${isOk ? '授权成功' : '授权失败'}</h2>
|
|
83
|
+
<p>${message}</p>
|
|
84
|
+
${isOk ? '<p class="close">此页面将自动关闭…</p>' : '<p class="close">请关闭此窗口并重试。</p>'}
|
|
85
|
+
</div>
|
|
86
|
+
${postMsg}
|
|
87
|
+
</body>
|
|
88
|
+
</html>`;
|
|
89
|
+
}
|
|
90
|
+
exports.default = router;
|
|
91
|
+
//# sourceMappingURL=oauth.routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.routes.js","sourceRoot":"","sources":["../../src/routes/oauth.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function startAnthropicOAuth(redirectUri: string): {
|
|
2
|
+
url: string;
|
|
3
|
+
state: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function handleAnthropicCallback(code: string, state: string, redirectUri: string): Promise<{
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function startOpenAIDeviceCode(): Promise<{
|
|
10
|
+
success: boolean;
|
|
11
|
+
flowId?: string;
|
|
12
|
+
userCode?: string;
|
|
13
|
+
verificationUrl?: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function getOpenAIFlowStatus(flowId: string): {
|
|
17
|
+
status: 'pending' | 'complete' | 'failed' | 'not_found';
|
|
18
|
+
error?: string;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=oauth.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.service.d.ts","sourceRoot":"","sources":["../../src/services/oauth.service.ts"],"names":[],"mappings":"AA4CA,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAevF;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAC/C,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD/C;AAQD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC;IACrD,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAkCD;AAwED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxE,CAKA"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startAnthropicOAuth = startAnthropicOAuth;
|
|
7
|
+
exports.handleAnthropicCallback = handleAnthropicCallback;
|
|
8
|
+
exports.startOpenAIDeviceCode = startOpenAIDeviceCode;
|
|
9
|
+
exports.getOpenAIFlowStatus = getOpenAIFlowStatus;
|
|
10
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
11
|
+
const settings_service_1 = require("./settings.service");
|
|
12
|
+
const anthropicFlows = new Map();
|
|
13
|
+
const openaiFlows = new Map();
|
|
14
|
+
setInterval(() => {
|
|
15
|
+
const cutoff = Date.now() - 30 * 60 * 1000;
|
|
16
|
+
for (const [k, v] of anthropicFlows)
|
|
17
|
+
if (v.createdAt < cutoff)
|
|
18
|
+
anthropicFlows.delete(k);
|
|
19
|
+
for (const [k, v] of openaiFlows)
|
|
20
|
+
if (v.createdAt < cutoff)
|
|
21
|
+
openaiFlows.delete(k);
|
|
22
|
+
}, 5 * 60 * 1000);
|
|
23
|
+
// ── PKCE helpers ──────────────────────────────────────────────────────────
|
|
24
|
+
function genVerifier() { return crypto_1.default.randomBytes(32).toString('base64url'); }
|
|
25
|
+
function genChallenge(v) {
|
|
26
|
+
return crypto_1.default.createHash('sha256').update(v).digest('base64url');
|
|
27
|
+
}
|
|
28
|
+
// ── Anthropic OAuth (PKCE + browser redirect) ─────────────────────────────
|
|
29
|
+
const ANTHROPIC_CLIENT_ID = '9d1c250a-e61b-44d9-88ed-5944d1962f5e';
|
|
30
|
+
const ANTHROPIC_AUTHORIZE = 'https://claude.ai/oauth/authorize';
|
|
31
|
+
const ANTHROPIC_TOKEN_URL = 'https://claude.ai/v1/oauth/token';
|
|
32
|
+
const ANTHROPIC_KEY_URL = 'https://api.anthropic.com/api/oauth/claude_cli/create_api_key';
|
|
33
|
+
const ANTHROPIC_SCOPES = 'user:profile org:create_api_key';
|
|
34
|
+
function startAnthropicOAuth(redirectUri) {
|
|
35
|
+
const state = crypto_1.default.randomBytes(16).toString('hex');
|
|
36
|
+
const verifier = genVerifier();
|
|
37
|
+
anthropicFlows.set(state, { verifier, createdAt: Date.now(), status: 'pending' });
|
|
38
|
+
const params = new URLSearchParams({
|
|
39
|
+
client_id: ANTHROPIC_CLIENT_ID,
|
|
40
|
+
response_type: 'code',
|
|
41
|
+
redirect_uri: redirectUri,
|
|
42
|
+
scope: ANTHROPIC_SCOPES,
|
|
43
|
+
state,
|
|
44
|
+
code_challenge: genChallenge(verifier),
|
|
45
|
+
code_challenge_method: 'S256'
|
|
46
|
+
});
|
|
47
|
+
return { url: `${ANTHROPIC_AUTHORIZE}?${params}`, state };
|
|
48
|
+
}
|
|
49
|
+
async function handleAnthropicCallback(code, state, redirectUri) {
|
|
50
|
+
const flow = anthropicFlows.get(state);
|
|
51
|
+
if (!flow)
|
|
52
|
+
return { success: false, error: 'state 无效或已过期' };
|
|
53
|
+
try {
|
|
54
|
+
// 1. Exchange code → access token
|
|
55
|
+
const tokenRes = await fetch(ANTHROPIC_TOKEN_URL, {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
headers: { 'Content-Type': 'application/json' },
|
|
58
|
+
body: JSON.stringify({
|
|
59
|
+
grant_type: 'authorization_code',
|
|
60
|
+
code,
|
|
61
|
+
redirect_uri: redirectUri,
|
|
62
|
+
client_id: ANTHROPIC_CLIENT_ID,
|
|
63
|
+
code_verifier: flow.verifier
|
|
64
|
+
}),
|
|
65
|
+
signal: AbortSignal.timeout(15000)
|
|
66
|
+
});
|
|
67
|
+
if (!tokenRes.ok) {
|
|
68
|
+
const err = await tokenRes.text();
|
|
69
|
+
throw new Error(`Token exchange failed (${tokenRes.status}): ${err.slice(0, 200)}`);
|
|
70
|
+
}
|
|
71
|
+
const tokenData = await tokenRes.json();
|
|
72
|
+
const accessToken = tokenData.access_token;
|
|
73
|
+
if (!accessToken)
|
|
74
|
+
throw new Error('响应中没有 access_token');
|
|
75
|
+
// 2. Create API key from access token
|
|
76
|
+
const keyRes = await fetch(ANTHROPIC_KEY_URL, {
|
|
77
|
+
method: 'POST',
|
|
78
|
+
headers: {
|
|
79
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
80
|
+
'Content-Type': 'application/json',
|
|
81
|
+
'anthropic-version': '2023-06-01'
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify({ name: 'PersonalAC' }),
|
|
84
|
+
signal: AbortSignal.timeout(15000)
|
|
85
|
+
});
|
|
86
|
+
if (!keyRes.ok) {
|
|
87
|
+
const err = await keyRes.text();
|
|
88
|
+
throw new Error(`API key creation failed (${keyRes.status}): ${err.slice(0, 200)}`);
|
|
89
|
+
}
|
|
90
|
+
const keyData = await keyRes.json();
|
|
91
|
+
const apiKey = keyData.api_key || keyData.key || keyData.raw_key;
|
|
92
|
+
if (!apiKey)
|
|
93
|
+
throw new Error('响应中没有 API key');
|
|
94
|
+
// 3. Save as AI config (user can still change model in Config tab)
|
|
95
|
+
(0, settings_service_1.saveAIConfig)('anthropic', 'claude-sonnet-4-6', 'Claude Sonnet 4.6', apiKey, 'https://api.anthropic.com/v1');
|
|
96
|
+
flow.status = 'complete';
|
|
97
|
+
anthropicFlows.set(state, flow);
|
|
98
|
+
return { success: true };
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
flow.status = 'failed';
|
|
102
|
+
flow.error = err instanceof Error ? err.message : String(err);
|
|
103
|
+
anthropicFlows.set(state, flow);
|
|
104
|
+
return { success: false, error: flow.error };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ── OpenAI Device Code flow ───────────────────────────────────────────────
|
|
108
|
+
const OPENAI_CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
|
|
109
|
+
const OPENAI_AUTH_BASE = 'https://auth.openai.com';
|
|
110
|
+
const OPENAI_CALLBACK = `${OPENAI_AUTH_BASE}/deviceauth/callback`;
|
|
111
|
+
async function startOpenAIDeviceCode() {
|
|
112
|
+
try {
|
|
113
|
+
const res = await fetch(`${OPENAI_AUTH_BASE}/api/accounts/deviceauth/usercode`, {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
headers: { 'Content-Type': 'application/json' },
|
|
116
|
+
body: JSON.stringify({ client_id: OPENAI_CLIENT_ID }),
|
|
117
|
+
signal: AbortSignal.timeout(15000)
|
|
118
|
+
});
|
|
119
|
+
if (!res.ok) {
|
|
120
|
+
const txt = await res.text();
|
|
121
|
+
throw new Error(`HTTP ${res.status}: ${txt.slice(0, 200)}`);
|
|
122
|
+
}
|
|
123
|
+
const data = await res.json();
|
|
124
|
+
const deviceAuthId = data.device_auth_id;
|
|
125
|
+
const userCode = data.user_code || data.usercode;
|
|
126
|
+
if (!deviceAuthId || !userCode)
|
|
127
|
+
throw new Error('响应缺少 device_auth_id 或 user_code');
|
|
128
|
+
const flowId = crypto_1.default.randomBytes(16).toString('hex');
|
|
129
|
+
const verificationUrl = `${OPENAI_AUTH_BASE}/codex/device`;
|
|
130
|
+
const intervalSec = typeof data.interval === 'number' ? Math.max(data.interval, 1) : 5;
|
|
131
|
+
openaiFlows.set(flowId, {
|
|
132
|
+
deviceAuthId, userCode, verificationUrl,
|
|
133
|
+
status: 'pending', createdAt: Date.now()
|
|
134
|
+
});
|
|
135
|
+
// Background polling
|
|
136
|
+
pollOpenAIDeviceCode(flowId, deviceAuthId, userCode, intervalSec).catch(() => { });
|
|
137
|
+
return { success: true, flowId, userCode, verificationUrl };
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async function pollOpenAIDeviceCode(flowId, deviceAuthId, userCode, intervalSec) {
|
|
144
|
+
const deadline = Date.now() + 15 * 60 * 1000;
|
|
145
|
+
const intervalMs = intervalSec * 1000;
|
|
146
|
+
while (Date.now() < deadline) {
|
|
147
|
+
await new Promise(r => setTimeout(r, intervalMs));
|
|
148
|
+
const flow = openaiFlows.get(flowId);
|
|
149
|
+
if (!flow || flow.status !== 'pending')
|
|
150
|
+
return;
|
|
151
|
+
try {
|
|
152
|
+
const res = await fetch(`${OPENAI_AUTH_BASE}/api/accounts/deviceauth/token`, {
|
|
153
|
+
method: 'POST',
|
|
154
|
+
headers: { 'Content-Type': 'application/json' },
|
|
155
|
+
body: JSON.stringify({ device_auth_id: deviceAuthId, user_code: userCode }),
|
|
156
|
+
signal: AbortSignal.timeout(10000)
|
|
157
|
+
});
|
|
158
|
+
if (res.ok) {
|
|
159
|
+
const data = await res.json();
|
|
160
|
+
if (!data.authorization_code || !data.code_verifier) {
|
|
161
|
+
flow.status = 'failed';
|
|
162
|
+
flow.error = '响应缺少 authorization_code 或 code_verifier';
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Exchange auth code for tokens
|
|
166
|
+
const tokenRes = await fetch(`${OPENAI_AUTH_BASE}/oauth/token`, {
|
|
167
|
+
method: 'POST',
|
|
168
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
169
|
+
body: new URLSearchParams({
|
|
170
|
+
grant_type: 'authorization_code',
|
|
171
|
+
code: data.authorization_code,
|
|
172
|
+
redirect_uri: OPENAI_CALLBACK,
|
|
173
|
+
client_id: OPENAI_CLIENT_ID,
|
|
174
|
+
code_verifier: data.code_verifier
|
|
175
|
+
}),
|
|
176
|
+
signal: AbortSignal.timeout(10000)
|
|
177
|
+
});
|
|
178
|
+
if (!tokenRes.ok) {
|
|
179
|
+
const txt = await tokenRes.text();
|
|
180
|
+
flow.status = 'failed';
|
|
181
|
+
flow.error = `Token exchange failed (${tokenRes.status}): ${txt.slice(0, 200)}`;
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const tokens = await tokenRes.json();
|
|
185
|
+
if (!tokens.access_token) {
|
|
186
|
+
flow.status = 'failed';
|
|
187
|
+
flow.error = '响应中没有 access_token';
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
(0, settings_service_1.saveAIConfig)('openai', 'gpt-4o', 'GPT-4o', tokens.access_token, 'https://api.openai.com/v1');
|
|
191
|
+
flow.status = 'complete';
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// 403/404 = still waiting, keep polling
|
|
195
|
+
if (res.status !== 403 && res.status !== 404) {
|
|
196
|
+
flow.status = 'failed';
|
|
197
|
+
flow.error = `轮询失败 HTTP ${res.status}`;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// network error — retry next interval
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const flow = openaiFlows.get(flowId);
|
|
206
|
+
if (flow?.status === 'pending') {
|
|
207
|
+
flow.status = 'failed';
|
|
208
|
+
flow.error = '授权超时(15 分钟)';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function getOpenAIFlowStatus(flowId) {
|
|
212
|
+
const flow = openaiFlows.get(flowId);
|
|
213
|
+
if (!flow)
|
|
214
|
+
return { status: 'not_found' };
|
|
215
|
+
if (flow.status === 'complete')
|
|
216
|
+
openaiFlows.delete(flowId);
|
|
217
|
+
return { status: flow.status, error: flow.error };
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=oauth.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.service.js","sourceRoot":"","sources":["../../src/services/oauth.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aZ as L,bv as ln,aH as A,aX as P,aG as z,bw as gn,bx as dn,by as hn,bz as W,bA as pn,bq as An,bB as m,a_ as N,b3 as B,b6 as T,bC as _n,b1 as on,bD as wn,bt as On,aI as V,br as vn,bE as R}from"./index-
|
|
1
|
+
import{aZ as L,bv as ln,aH as A,aX as P,aG as z,bw as gn,bx as dn,by as hn,bz as W,bA as pn,bq as An,bB as m,a_ as N,b3 as B,b6 as T,bC as _n,b1 as on,bD as wn,bt as On,aI as V,br as vn,bE as R}from"./index-BlFfFspX.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function bn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var U=P?P.prototype:void 0,H=U?U.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return bn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?In(n,r,e):cn(n,Tn,e)}function Sn(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function M(n){return z(n)?gn(n):dn(n)}var Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function C(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Ln.test(n)||r!=null&&n in Object(r)}var Mn=500;function Cn(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var $n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dn=/\\(\\)?/g,Gn=Cn(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace($n,function(e,i,f,t){r.push(f?t.replace(Dn,"$1"):i||e)}),r});function Fn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:C(n,r)?[n]:Gn(Fn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||W(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Bn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Un(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Un;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Xn="__lodash_hash_undefined__";function Yn(n){return this.__data__.set(n,Xn),this}function Jn(n){return this.__data__.has(n)}function b(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}b.prototype.add=b.prototype.push=Yn;b.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var zn=1,Wn=2;function fn(n,r,e,i,f,t){var s=e&zn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&Wn?new b:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function $(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",X=P?P.prototype:void 0,S=X?X.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=$),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(S)return S.call(n)==S.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],v=r[d];if(i)var F=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(F===void 0?O===v||f(O,v,e,i,t):F)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var y=n.constructor,E=r.constructor;y!=E&&"constructor"in n&&"constructor"in r&&!(typeof y=="function"&&y instanceof y&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,Y="[object Arguments]",J="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==Y?c:a,h=h==Y?c:h;var g=a==c,l=h==c,d=a==h;if(d&&B(n)){if(!B(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function D(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,D,f)}var vr=1,Pr=2;function br(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?D(h,a,vr|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function yr(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=yr(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||br(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||W(n)))}function Ir(n,r){return n!=null&&Tr(n,r,cr)}var Rr=1,Sr=2;function Lr(n,r){return C(n)&&sn(r)?un(I(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Ir(e,n):D(r,i,Rr|Sr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function Cr(n){return C(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Lr(n[0],n[1]):Er(n):Cr(n)}function $r(n,r){return n&&vn(n,r,M)}function Dr(n,r){return function(e,i){if(e==null)return e;if(!z(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Dr($r);function Gr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:G;return e(n,Gr(r))}function Fr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Fr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Xr(n,r,e){var i=A(n)?Bn:mr,f=arguments.length<3;return i(n,an(r),e,f,G)}var Nr=1/0,Br=R&&1/$(new R([,-0]))[1]==Nr?function(n){return new R(n)}:yn,Ur=200;function Yr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Ur){var h=r?null:Br(n);if(h)return $(h);s=!1,f=tn,a=new b}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Kr as b,an as c,bn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Yr as l,Zr as m,qr as n,cn as o,Gr as p,$r as q,Xr as r,Un as s,Tr as t,j as u,I as v,nn as w,Ir as x,Fn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-
|
|
1
|
+
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-BlFfFspX.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|