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.
Files changed (66) hide show
  1. package/dist/index.js +2 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/routes/oauth.routes.d.ts +3 -0
  4. package/dist/routes/oauth.routes.d.ts.map +1 -0
  5. package/dist/routes/oauth.routes.js +91 -0
  6. package/dist/routes/oauth.routes.js.map +1 -0
  7. package/dist/services/oauth.service.d.ts +20 -0
  8. package/dist/services/oauth.service.d.ts.map +1 -0
  9. package/dist/services/oauth.service.js +219 -0
  10. package/dist/services/oauth.service.js.map +1 -0
  11. package/package.json +1 -1
  12. package/public/assets/{_baseUniq-BUjPUno3.js → _baseUniq-BjH6Ha2t.js} +1 -1
  13. package/public/assets/{arc-DpusTbKo.js → arc-CthW4XSM.js} +1 -1
  14. package/public/assets/{architectureDiagram-Q4EWVU46-DxfzLTZt.js → architectureDiagram-Q4EWVU46-84pLPqc9.js} +1 -1
  15. package/public/assets/{blockDiagram-DXYQGD6D-Ddvf4G7V.js → blockDiagram-DXYQGD6D-S0WKInPW.js} +1 -1
  16. package/public/assets/{c4Diagram-AHTNJAMY-3v8B-o3q.js → c4Diagram-AHTNJAMY-DCw5Tp3x.js} +1 -1
  17. package/public/assets/channel-Bye_jOCG.js +1 -0
  18. package/public/assets/{chunk-4BX2VUAB-H_3-H-Br.js → chunk-4BX2VUAB-Bl6M0B0o.js} +1 -1
  19. package/public/assets/{chunk-4TB4RGXK-BLKoLCDw.js → chunk-4TB4RGXK-jNNlshuG.js} +1 -1
  20. package/public/assets/{chunk-55IACEB6-DLg_EGBP.js → chunk-55IACEB6-B8DAO4mM.js} +1 -1
  21. package/public/assets/{chunk-EDXVE4YY-DNTB-cml.js → chunk-EDXVE4YY-AcJNtOHq.js} +1 -1
  22. package/public/assets/{chunk-FMBD7UC4-KEMvqB1P.js → chunk-FMBD7UC4-DWUAdz50.js} +1 -1
  23. package/public/assets/{chunk-OYMX7WX6-Bk6s6pS-.js → chunk-OYMX7WX6-CTYYxj8X.js} +1 -1
  24. package/public/assets/{chunk-QZHKN3VN-j9h-R9kP.js → chunk-QZHKN3VN-YXCJYAVy.js} +1 -1
  25. package/public/assets/{chunk-YZCP3GAM-CLM0UTUV.js → chunk-YZCP3GAM-Bg94jlAf.js} +1 -1
  26. package/public/assets/classDiagram-6PBFFD2Q-CLsw_eQd.js +1 -0
  27. package/public/assets/classDiagram-v2-HSJHXN6E-CLsw_eQd.js +1 -0
  28. package/public/assets/clone-D8FMpd61.js +1 -0
  29. package/public/assets/{cose-bilkent-S5V4N54A-Dp9Wp6nq.js → cose-bilkent-S5V4N54A-CT5iU-I_.js} +1 -1
  30. package/public/assets/{dagre-KV5264BT-CeYZA6Eh.js → dagre-KV5264BT-C8UOh9bz.js} +1 -1
  31. package/public/assets/{diagram-5BDNPKRD-EiblI4S_.js → diagram-5BDNPKRD-Dln4x7ex.js} +1 -1
  32. package/public/assets/{diagram-G4DWMVQ6-Dsajlr3V.js → diagram-G4DWMVQ6-DHH0_881.js} +1 -1
  33. package/public/assets/{diagram-MMDJMWI5-dy-W4DGg.js → diagram-MMDJMWI5-B2zLbKSi.js} +1 -1
  34. package/public/assets/{diagram-TYMM5635-D3eSmiZp.js → diagram-TYMM5635-BI0fmMbC.js} +1 -1
  35. package/public/assets/{erDiagram-SMLLAGMA-Dd2XgIok.js → erDiagram-SMLLAGMA-CoDa-HEh.js} +1 -1
  36. package/public/assets/{flowDiagram-DWJPFMVM-Bbk93w6w.js → flowDiagram-DWJPFMVM-RoL8r18K.js} +1 -1
  37. package/public/assets/{ganttDiagram-T4ZO3ILL-LgsAY_DZ.js → ganttDiagram-T4ZO3ILL-CSvA3nAR.js} +1 -1
  38. package/public/assets/{gitGraphDiagram-UUTBAWPF-DPAMYupQ.js → gitGraphDiagram-UUTBAWPF-DqMHMIWH.js} +1 -1
  39. package/public/assets/{graph-CoeRJrl1.js → graph-BjC7TY_c.js} +1 -1
  40. package/public/assets/{index-CtPXtGtU.js → index-BlFfFspX.js} +112 -112
  41. package/public/assets/{infoDiagram-42DDH7IO-WRAP6VzM.js → infoDiagram-42DDH7IO-DfO7QUPU.js} +1 -1
  42. package/public/assets/{ishikawaDiagram-UXIWVN3A-BONgeVRT.js → ishikawaDiagram-UXIWVN3A-36-P7vue.js} +1 -1
  43. package/public/assets/{journeyDiagram-VCZTEJTY-qTpIQVa-.js → journeyDiagram-VCZTEJTY-BE1e2QFE.js} +1 -1
  44. package/public/assets/{kanban-definition-6JOO6SKY-CzYI-mWW.js → kanban-definition-6JOO6SKY-3lY4IkJS.js} +1 -1
  45. package/public/assets/{layout-Dpa7UTxK.js → layout-DVixObfK.js} +1 -1
  46. package/public/assets/{linear-DI9UUWXE.js → linear-DlV2-cBd.js} +1 -1
  47. package/public/assets/{min-CN6QpsCL.js → min-BpS0hR56.js} +1 -1
  48. package/public/assets/{mindmap-definition-QFDTVHPH-AIvhr-rx.js → mindmap-definition-QFDTVHPH-OMfKNpKW.js} +1 -1
  49. package/public/assets/{pieDiagram-DEJITSTG-CNynLc-T.js → pieDiagram-DEJITSTG-C6ynawiU.js} +1 -1
  50. package/public/assets/{quadrantDiagram-34T5L4WZ-BfUYDHEz.js → quadrantDiagram-34T5L4WZ-Nb18_YYq.js} +1 -1
  51. package/public/assets/{requirementDiagram-MS252O5E-Dfu2QUbN.js → requirementDiagram-MS252O5E-DBZ_vHYN.js} +1 -1
  52. package/public/assets/{sankeyDiagram-XADWPNL6-C-LyLmEd.js → sankeyDiagram-XADWPNL6-BhLEqXEL.js} +1 -1
  53. package/public/assets/{sequenceDiagram-FGHM5R23-CSFgOfvA.js → sequenceDiagram-FGHM5R23-_nlrzldJ.js} +1 -1
  54. package/public/assets/{stateDiagram-FHFEXIEX-YCfokhwP.js → stateDiagram-FHFEXIEX-mD4Ie1v3.js} +1 -1
  55. package/public/assets/stateDiagram-v2-QKLJ7IA2-ropa5YHP.js +1 -0
  56. package/public/assets/{timeline-definition-GMOUNBTQ-BSctlYWQ.js → timeline-definition-GMOUNBTQ-DzxnMPkG.js} +1 -1
  57. package/public/assets/{vennDiagram-DHZGUBPP-Ck5dIGcf.js → vennDiagram-DHZGUBPP-DfJqbr2m.js} +1 -1
  58. package/public/assets/{wardley-RL74JXVD-BJsYpN2B.js → wardley-RL74JXVD-GA_E0Opl.js} +1 -1
  59. package/public/assets/{wardleyDiagram-NUSXRM2D-CEnC7Nva.js → wardleyDiagram-NUSXRM2D-Bkuk03EL.js} +1 -1
  60. package/public/assets/{xychartDiagram-5P7HB3ND-DrgW-fZM.js → xychartDiagram-5P7HB3ND-CSRpbg1l.js} +1 -1
  61. package/public/index.html +1 -1
  62. package/public/assets/channel-DnqtKNaA.js +0 -1
  63. package/public/assets/classDiagram-6PBFFD2Q-BeTpodcT.js +0 -1
  64. package/public/assets/classDiagram-v2-HSJHXN6E-BeTpodcT.js +0 -1
  65. package/public/assets/clone-Bf1qUYsB.js +0 -1
  66. 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,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=oauth.routes.d.ts.map
@@ -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":";;AAAA,qCAAmD;AACnD,6DAGkC;AAClC,mEAA2D;AAE3D,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAA;AAEvB,6EAA6E;AAE7E,qDAAqD;AACrD,mDAAmD;AACnD,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC7D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,GAAG,IAAI,+BAA+B,CAAA;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,mCAAmB,EAAC,WAAW,CAAC,CAAA;IAChD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACnB,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACtE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,KAA+B,CAAA;IAE9E,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,UAAU,EAAE,CAAC,CAAC,CAAA;QAC/D,OAAM;IACR,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAA;QACrD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,GAAG,IAAI,+BAA+B,CAAA;IAC1D,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAuB,EAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAEtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,4BAA4B,EAAE,WAAW,CAAC,CAAC,CAAA;IAC9E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAA;IACzD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,6EAA6E;AAE7E,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,6BAAW,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,MAAM,IAAA,qCAAqB,GAAE,CAAA;IAC5C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAClB,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,6BAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAC7B,GAAG,CAAC,IAAI,CAAC,IAAA,mCAAmB,EAAC,MAAM,CAAC,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,6EAA6E;AAE7E,SAAS,YAAY,CAAC,IAAyB,EAAE,OAAe,EAAE,QAAiB;IACjF,MAAM,IAAI,GAAI,IAAI,KAAK,SAAS,CAAA;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1C,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IAE9B,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ;QAC9B,CAAC,CAAC;;;6EAGuE,QAAQ;;;;iBAIpE;QACb,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;;;;WAIE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;;;;;;;yEAOwC,KAAK;;sCAExC,KAAK;;;;;;;;wBAQnB,IAAI;UAClB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;SACvB,OAAO;MACV,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,iCAAiC;;IAE7E,OAAO;;QAEH,CAAA;AACR,CAAC;AAED,kBAAe,MAAM,CAAA"}
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "personalac",
3
- "version": "1.4.7",
3
+ "version": "1.4.8",
4
4
  "description": "PersonalAC — 个性化学习辅助系统(本地版)",
5
5
  "keywords": [
6
6
  "education",
@@ -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-CtPXtGtU.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
+ 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-CtPXtGtU.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};
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};