arkts-lsp-proxy 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,8 +21,8 @@ arkts-lsp-proxy (Node.js 进程)
21
21
  ├── 1. 发现 DevEco Studio(环境变量 / 自动搜索)
22
22
  ├── 2. 推导 SDK、ace-server、工具链路径
23
23
  ├── 3. 解析 build-profile.json5,构造 modules 参数
24
- ├── 4. 运行 hvigor --sync(生成依赖映射)
25
- └── 5. 启动 ace-server,拦截 initialize 请求注入参数
24
+ ├── 4. 启动 ace-server,拦截 initialize 请求注入参数
25
+ └── 5. 后台按需运行 hvigor --sync(刷新依赖映射)
26
26
 
27
27
 
28
28
  ace-server (DevEco 官方语言服务)
@@ -33,7 +33,16 @@ arkts-lsp-proxy (Node.js 进程)
33
33
  └── @Component/@State/@Prop 语义理解
34
34
  ```
35
35
 
36
- 代理不实现任何语言功能,只做消息转发和参数注入。
36
+ 代理不实现 ArkTS 语义分析,只做启动适配、消息转发、参数注入和必要的 LSP 结果归一化。比如 DevEco ace-server 会把 hover 内容包成私有 JSON 字符串,代理会转换成标准 Markdown hover,方便 Claude Code 直接消费类型信息。
37
+
38
+ ## 当前支持的核心能力
39
+
40
+ - `textDocument/completion`
41
+ - `textDocument/hover`,包含类型信息和文档,已转换为标准 Markdown 内容
42
+ - `textDocument/definition`
43
+ - `textDocument/references`
44
+ - `textDocument/signatureHelp`
45
+ - diagnostics,来自 ace-server 的发布诊断
37
46
 
38
47
  ## 前置条件
39
48
 
@@ -77,15 +86,38 @@ export DEVECO_HOME=/opt/DevEco-Studio
77
86
 
78
87
  ## 使用
79
88
 
80
- 插件安装后,打开 `.ets` 文件时 LSP 自动激活。首次启动会执行 `hvigor --sync` 初始化依赖映射(可能需要几分钟),后续有缓存会很快。
89
+ 插件安装后,打开 `.ets` 文件时 LSP 自动激活。代理会优先启动 LSP 并响应请求;`hvigor --sync` 只作为后台 metadata refresh,不会阻塞 LSP 初始化。
81
90
 
82
- 也可以手动运行:
91
+ 也可以手动运行(支持直接给出项目路径):
83
92
 
84
93
  ```bash
85
- cd /path/to/harmonyos/project
86
- arkts-lsp-proxy
94
+ arkts-lsp-proxy --project-root /path/to/harmonyos/project
87
95
  ```
88
96
 
97
+ 当从非鸿蒙目录启动时,默认不会立即校验项目;会等到 LSP 初始化请求到来后根据 `rootUri`/`workspaceFolders` 自动定位鸿蒙项目路径。
98
+
99
+ ### Hvigor metadata sync
100
+
101
+ `arkts-lsp-proxy` 不会把 `hvigor --sync` 作为 LSP 启动前置条件。这个策略和 Claude Code 的其它 LSP 插件一致:插件负责启动 language server,工程 metadata / index refresh 属于 language server 内部增强流程。
102
+
103
+ 环境变量:
104
+
105
+ ```bash
106
+ # 默认:只有 metadata 缺失或过期时,后台运行 hvigor sync
107
+ export ARKTS_LSP_SYNC=auto
108
+
109
+ # 完全跳过 hvigor sync,启动最快
110
+ export ARKTS_LSP_SYNC=off
111
+
112
+ # 强制后台运行 hvigor sync,即使 metadata 看起来是新鲜的
113
+ export ARKTS_LSP_SYNC=force
114
+
115
+ # 后台 sync 超时,默认 15000
116
+ export ARKTS_LSP_SYNC_TIMEOUT_MS=15000
117
+ ```
118
+
119
+ 如果 sync 失败或超时,LSP 仍会继续运行。当前文件的 completion、hover、definition、references、diagnostics 应继续可用;跨模块、SDK、依赖相关结果可能降级,直到 metadata 刷新成功。
120
+
89
121
  ## 平台支持
90
122
 
91
123
  | 平台 | 默认搜索路径 |
@@ -101,10 +133,10 @@ macOS 自动处理 `.app/Contents` 层,用户只需设置 `.app` 路径。
101
133
  | 场景 | 行为 |
102
134
  |------|------|
103
135
  | DevEco Studio 未安装 | stderr 输出安装指引,exit(1) |
104
- | 项目目录无 `build-profile.json5` | stderr 输出提示,exit(1) |
105
- | hvigor sync 失败 | stderr 输出警告,继续启动 ace-server |
136
+ | 初始化请求未携带可定位路径或未检测到 `build-profile.json5` | 代理返回 LSP 初始化错误,需调整 `rootUri`/`workspaceFolders` |
137
+ | hvigor sync 失败或超时 | stderr 输出警告,LSP 继续以现有 metadata / degraded 模式运行 |
106
138
  | ace-server 启动失败 | 输出错误信息,exit(1) |
107
- | ace-server 运行时崩溃 | 代理进程同步退出 |
139
+ | ace-server 运行时崩溃 | 代理将中断当前会话并回传错误 |
108
140
 
109
141
  ## 开发
110
142
 
@@ -128,7 +160,7 @@ npm link
128
160
  src/
129
161
  ├── env.ts DevEco Studio 环境发现
130
162
  ├── project.ts HarmonyOS 项目解析 + findProjectRoot 向上搜索
131
- ├── hvigor.ts hvigor sync 缓存检查与执行
163
+ ├── hvigor.ts hvigor metadata 状态、sync 策略与后台执行
132
164
  ├── ace-server.ts ace-server 子进程生命周期管理(onExit 回调)
133
165
  ├── proxy.ts LSP 消息代理,拦截 initialize 注入参数
134
166
  └── index.ts 入口,串联所有模块
@@ -138,6 +170,9 @@ plugins/
138
170
  └── arkts-lsp/
139
171
  ├── .claude-plugin/
140
172
  │ └── plugin.json 插件清单
173
+ ├── hooks/
174
+ │ └── hooks.json SessionStart 自动安装 hook
175
+ ├── package.json npm 依赖声明(供 hook 自动安装)
141
176
  ├── .lsp.json LSP 服务器配置
142
177
  └── README.md 插件文档
143
178
  test/
@@ -1,10 +1,11 @@
1
- import { type ChildProcess } from 'child_process';
1
+ import { type ChildProcess } from 'node:child_process';
2
2
  import type { DevEcoEnv } from './env';
3
3
  export type ExitHandler = (code: number | null, signal: string | null) => void;
4
4
  export interface AceServerHandle {
5
5
  process: ChildProcess;
6
6
  kill: () => void;
7
7
  onExit: (handler: ExitHandler) => void;
8
+ dispose: () => void;
8
9
  }
9
10
  export declare function startAceServer(env: DevEcoEnv): AceServerHandle;
10
11
  //# sourceMappingURL=ace-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ace-server.d.ts","sourceRoot":"","sources":["../src/ace-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe,CA8C9D"}
1
+ {"version":3,"file":"ace-server.d.ts","sourceRoot":"","sources":["../src/ace-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AASD,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,eAAe,CA6D9D"}
@@ -1,12 +1,64 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.startAceServer = startAceServer;
4
- const child_process_1 = require("child_process");
37
+ const node_child_process_1 = require("node:child_process");
38
+ const fs = __importStar(require("node:fs"));
39
+ const os = __importStar(require("node:os"));
40
+ const path = __importStar(require("node:path"));
41
+ function createLogDir() {
42
+ const baseDir = process.env.ARKTS_LSP_LOG_DIR || path.join(os.tmpdir(), 'arkts-lsp-proxy');
43
+ const logDir = path.join(baseDir, Date.now().toString());
44
+ fs.mkdirSync(logDir, { recursive: true });
45
+ return logDir;
46
+ }
5
47
  function startAceServer(env) {
6
- process.stderr.write(`[arkts-lsp] Starting ace-server: ${env.aceServerPath}\n`);
7
- const child = (0, child_process_1.spawn)(env.nodeBin, [env.aceServerPath, '--stdio'], {
48
+ process.stderr.write(`[arkts-lsp] Starting ace-server (stdio): ${env.aceServerPath}\n`);
49
+ const logDir = createLogDir();
50
+ process.stderr.write(`[arkts-lsp] ace-server logs: ${logDir}\n`);
51
+ const child = (0, node_child_process_1.spawn)(env.nodeBin, [
52
+ '--max-old-space-size=8192',
53
+ '--expose-gc',
54
+ env.aceServerPath,
55
+ '--stdio',
56
+ `--logger-path=${logDir}`,
57
+ '--logger-level=INFO',
58
+ ], {
8
59
  stdio: ['pipe', 'pipe', 'pipe'],
9
60
  windowsHide: true,
61
+ cwd: env.devecoHome,
10
62
  env: {
11
63
  ...process.env,
12
64
  DEVECO_SDK_HOME: env.sdkPath,
@@ -41,6 +93,11 @@ function startAceServer(env) {
41
93
  onExit: (handler) => {
42
94
  exitHandlers.push(handler);
43
95
  },
96
+ dispose: () => {
97
+ if (child.exitCode === null) {
98
+ child.kill();
99
+ }
100
+ },
44
101
  };
45
102
  }
46
103
  //# sourceMappingURL=ace-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ace-server.js","sourceRoot":"","sources":["../src/ace-server.ts"],"names":[],"mappings":";;AAWA,wCA8CC;AAzDD,iDAAyD;AAWzD,SAAgB,cAAc,CAAC,GAAc;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE;QAC/D,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,eAAe,EAAE,GAAG,CAAC,OAAO;SAC7B;KACF,CAAC,CAAC;IAEH,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,IAAI,YAAY,MAAM,KAAK,CAAC,CAAC;QACzF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,OAAoB,EAAE,EAAE;YAC/B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ace-server.js","sourceRoot":"","sources":["../src/ace-server.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4DD,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAgBhD"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwED,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAgBhD"}
package/dist/env.js CHANGED
@@ -57,6 +57,16 @@ const DEFAULT_PATHS = {
57
57
  path.join(os.homedir(), 'AppData', 'Local', 'Huawei', 'DevecoStudio'),
58
58
  ],
59
59
  };
60
+ const ENV_HINT_KEYS = ['ARKTS_DEVECO_HOME', 'ARKTS_DEVELOPER_PATH', 'DEVECO_HOME', 'DEVECO_PATH'];
61
+ function pickExplicitEnvHome() {
62
+ for (const key of ENV_HINT_KEYS) {
63
+ const candidate = process.env[key];
64
+ if (candidate && candidate.trim()) {
65
+ return candidate.trim();
66
+ }
67
+ }
68
+ return null;
69
+ }
60
70
  function resolveContentsPath(rawPath) {
61
71
  const lower = rawPath.toLowerCase();
62
72
  if (lower.endsWith('.app')) {
@@ -91,9 +101,9 @@ function validateDevEcoHome(candidate) {
91
101
  };
92
102
  }
93
103
  function findDevEcoEnv() {
94
- const envHome = process.env.DEVECO_HOME;
104
+ const envHome = pickExplicitEnvHome();
95
105
  if (envHome) {
96
- const result = validateDevEcoHome(envHome.trim());
106
+ const result = validateDevEcoHome(envHome);
97
107
  if (result)
98
108
  return result;
99
109
  // When DEVECO_HOME is explicitly set but invalid, don't fall through to defaults
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFA,sCAgBC;AAlGD,2CAA6B;AAC7B,uCAAyB;AACzB,uCAAyB;AAUzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClC,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ,CAAC;AACrC,MAAM,MAAM,GAAG,QAAQ,KAAK,OAAO,CAAC;AAEpC,MAAM,aAAa,GAA6B;IAC9C,MAAM,EAAE;QACN,iCAAiC;QACjC,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,CAAC;KAC7D;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC;KACzC;IACD,KAAK,EAAE;QACL,qCAAqC;QACrC,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC;KACtE;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAElG,SAAS,mBAAmB;IAC1B,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACzG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAEnF,OAAO;QACL,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC;QAClD,aAAa;QACb,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,iFAAiF;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC;IAChE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/hvigor.d.ts CHANGED
@@ -1,3 +1,28 @@
1
1
  import type { DevEcoEnv } from './env';
2
+ export type HvigorMetadataStateName = 'fresh' | 'stale' | 'missing';
3
+ export type HvigorSyncMode = 'auto' | 'off' | 'force';
4
+ export type HvigorSyncStatus = 'skipped' | 'completed' | 'failed' | 'timeout';
5
+ export interface HvigorMetadataState {
6
+ state: HvigorMetadataStateName;
7
+ dependencyMapPath: string;
8
+ ageMs?: number;
9
+ }
10
+ export interface HvigorSyncConfig {
11
+ mode: HvigorSyncMode;
12
+ timeoutMs: number;
13
+ metadataMaxAgeMs: number;
14
+ }
15
+ export interface HvigorSyncResult {
16
+ status: HvigorSyncStatus;
17
+ reason?: 'disabled' | 'fresh' | 'missing-tools' | 'exit-code' | 'spawn-error';
18
+ metadataBefore: HvigorMetadataState;
19
+ metadataAfter?: HvigorMetadataState;
20
+ elapsedMs: number;
21
+ exitCode?: number | null;
22
+ errorMessage?: string;
23
+ }
24
+ export declare function getHvigorMetadataState(projectRoot: string, maxAgeMs?: number): HvigorMetadataState;
25
+ export declare function parseHvigorSyncConfig(env?: NodeJS.ProcessEnv): HvigorSyncConfig;
26
+ export declare function runHvigorSyncAsync(env: DevEcoEnv, projectRoot: string, config?: HvigorSyncConfig): Promise<HvigorSyncResult>;
2
27
  export declare function runHvigorSync(env: DevEcoEnv, projectRoot: string): boolean;
3
28
  //# sourceMappingURL=hvigor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hvigor.d.ts","sourceRoot":"","sources":["../src/hvigor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA2BvC,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAgD1E"}
1
+ {"version":3,"file":"hvigor.d.ts","sourceRoot":"","sources":["../src/hvigor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,eAAe,GAAG,WAAW,GAAG,aAAa,CAAC;IAC9E,cAAc,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,SAA8B,GACrC,mBAAmB,CAiBrB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,gBAAgB,CAY5F;AAYD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,mBAA0B,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAqF3B;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CA6C1E"}
package/dist/hvigor.js CHANGED
@@ -33,11 +33,16 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getHvigorMetadataState = getHvigorMetadataState;
37
+ exports.parseHvigorSyncConfig = parseHvigorSyncConfig;
38
+ exports.runHvigorSyncAsync = runHvigorSyncAsync;
36
39
  exports.runHvigorSync = runHvigorSync;
37
40
  const path = __importStar(require("path"));
38
41
  const fs = __importStar(require("fs"));
39
42
  const child_process_1 = require("child_process");
40
- const HVIGOR_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
43
+ const DEFAULT_METADATA_MAX_AGE_MS = 24 * 60 * 60 * 1000;
44
+ const DEFAULT_SYNC_TIMEOUT_MS = 15_000;
45
+ const LEGACY_HVIGOR_TIMEOUT_MS = 10 * 60 * 1000;
41
46
  const HVIGOR_FLAGS = [
42
47
  '--sync',
43
48
  '-p', 'product=default',
@@ -47,37 +52,140 @@ const HVIGOR_FLAGS = [
47
52
  '-p', 'enforce-ohpm=true',
48
53
  '--daemonjs',
49
54
  ];
50
- function isSyncFresh(projectRoot) {
51
- const depMap = path.join(projectRoot, '.hvigor', 'dependencyMap', 'dependencyMap.json5');
52
- if (!fs.existsSync(depMap))
53
- return false;
55
+ function getDependencyMapPath(projectRoot) {
56
+ return path.join(projectRoot, '.hvigor', 'dependencyMap', 'dependencyMap.json5');
57
+ }
58
+ function getHvigorMetadataState(projectRoot, maxAgeMs = DEFAULT_METADATA_MAX_AGE_MS) {
59
+ const dependencyMapPath = getDependencyMapPath(projectRoot);
60
+ if (!fs.existsSync(dependencyMapPath)) {
61
+ return { state: 'missing', dependencyMapPath };
62
+ }
54
63
  try {
55
- const stat = fs.statSync(depMap);
64
+ const stat = fs.statSync(dependencyMapPath);
56
65
  const ageMs = Date.now() - stat.mtimeMs;
57
- return ageMs < 24 * 60 * 60 * 1000; // fresh if less than 24 hours old
66
+ return {
67
+ state: ageMs < maxAgeMs ? 'fresh' : 'stale',
68
+ dependencyMapPath,
69
+ ageMs,
70
+ };
58
71
  }
59
72
  catch {
60
- return false;
73
+ return { state: 'missing', dependencyMapPath };
74
+ }
75
+ }
76
+ function parseHvigorSyncConfig(env = process.env) {
77
+ const rawMode = env.ARKTS_LSP_SYNC;
78
+ const mode = rawMode === 'off' || rawMode === 'force' || rawMode === 'auto' ? rawMode : 'auto';
79
+ const parsedTimeout = Number(env.ARKTS_LSP_SYNC_TIMEOUT_MS);
80
+ const timeoutMs = Number.isFinite(parsedTimeout) && parsedTimeout > 0 ? parsedTimeout : DEFAULT_SYNC_TIMEOUT_MS;
81
+ return {
82
+ mode,
83
+ timeoutMs,
84
+ metadataMaxAgeMs: DEFAULT_METADATA_MAX_AGE_MS,
85
+ };
86
+ }
87
+ function getMissingToolsMessage(env) {
88
+ if (!fs.existsSync(env.nodeBin)) {
89
+ return `DevEco node not found at: ${env.nodeBin}`;
90
+ }
91
+ if (!fs.existsSync(env.hvigorPath)) {
92
+ return `hvigorw.js not found at: ${env.hvigorPath}`;
61
93
  }
94
+ return null;
95
+ }
96
+ async function runHvigorSyncAsync(env, projectRoot, config = parseHvigorSyncConfig()) {
97
+ const startTime = Date.now();
98
+ const metadataBefore = getHvigorMetadataState(projectRoot, config.metadataMaxAgeMs);
99
+ if (config.mode === 'off') {
100
+ return { status: 'skipped', reason: 'disabled', metadataBefore, elapsedMs: 0 };
101
+ }
102
+ if (config.mode === 'auto' && metadataBefore.state === 'fresh') {
103
+ return { status: 'skipped', reason: 'fresh', metadataBefore, elapsedMs: 0 };
104
+ }
105
+ const missingToolsMessage = getMissingToolsMessage(env);
106
+ if (missingToolsMessage) {
107
+ return {
108
+ status: 'failed',
109
+ reason: 'missing-tools',
110
+ metadataBefore,
111
+ elapsedMs: Date.now() - startTime,
112
+ errorMessage: missingToolsMessage,
113
+ };
114
+ }
115
+ return new Promise((resolve) => {
116
+ let settled = false;
117
+ let stderr = '';
118
+ const child = (0, child_process_1.spawn)(env.nodeBin, [env.hvigorPath, ...HVIGOR_FLAGS], {
119
+ cwd: projectRoot,
120
+ windowsHide: true,
121
+ env: {
122
+ ...process.env,
123
+ DEVECO_SDK_HOME: env.sdkPath,
124
+ },
125
+ });
126
+ function finish(result) {
127
+ if (settled) {
128
+ return;
129
+ }
130
+ settled = true;
131
+ clearTimeout(timer);
132
+ resolve({
133
+ ...result,
134
+ metadataBefore,
135
+ elapsedMs: Date.now() - startTime,
136
+ });
137
+ }
138
+ const timer = setTimeout(() => {
139
+ child.kill('SIGTERM');
140
+ finish({
141
+ status: 'timeout',
142
+ metadataAfter: getHvigorMetadataState(projectRoot, config.metadataMaxAgeMs),
143
+ errorMessage: `hvigor sync timed out after ${config.timeoutMs}ms`,
144
+ });
145
+ }, config.timeoutMs);
146
+ child.stderr?.on('data', (chunk) => {
147
+ stderr += chunk.toString();
148
+ });
149
+ child.on('error', (error) => {
150
+ finish({
151
+ status: 'failed',
152
+ reason: 'spawn-error',
153
+ metadataAfter: getHvigorMetadataState(projectRoot, config.metadataMaxAgeMs),
154
+ errorMessage: error.message,
155
+ });
156
+ });
157
+ child.on('exit', (code) => {
158
+ const metadataAfter = getHvigorMetadataState(projectRoot, config.metadataMaxAgeMs);
159
+ if (code === 0) {
160
+ finish({ status: 'completed', metadataAfter, exitCode: code });
161
+ return;
162
+ }
163
+ finish({
164
+ status: 'failed',
165
+ reason: 'exit-code',
166
+ metadataAfter,
167
+ exitCode: code,
168
+ errorMessage: stderr.slice(-500),
169
+ });
170
+ });
171
+ });
62
172
  }
63
173
  function runHvigorSync(env, projectRoot) {
64
- if (isSyncFresh(projectRoot)) {
174
+ const metadata = getHvigorMetadataState(projectRoot);
175
+ if (metadata.state === 'fresh') {
65
176
  process.stderr.write('[arkts-lsp] hvigor sync skipped (dependency map is fresh)\n');
66
177
  return true;
67
178
  }
68
- if (!fs.existsSync(env.nodeBin)) {
69
- process.stderr.write(`[arkts-lsp] DevEco node not found at: ${env.nodeBin}\n`);
70
- return false;
71
- }
72
- if (!fs.existsSync(env.hvigorPath)) {
73
- process.stderr.write(`[arkts-lsp] hvigorw.js not found at: ${env.hvigorPath}\n`);
179
+ const missingToolsMessage = getMissingToolsMessage(env);
180
+ if (missingToolsMessage) {
181
+ process.stderr.write(`[arkts-lsp] ${missingToolsMessage}\n`);
74
182
  return false;
75
183
  }
76
184
  process.stderr.write('[arkts-lsp] hvigor sync starting...\n');
77
185
  const startTime = Date.now();
78
186
  const result = (0, child_process_1.spawnSync)(env.nodeBin, [env.hvigorPath, ...HVIGOR_FLAGS], {
79
187
  cwd: projectRoot,
80
- timeout: HVIGOR_TIMEOUT_MS,
188
+ timeout: LEGACY_HVIGOR_TIMEOUT_MS,
81
189
  windowsHide: true,
82
190
  encoding: 'utf8',
83
191
  env: {
@@ -88,7 +196,7 @@ function runHvigorSync(env, projectRoot) {
88
196
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
89
197
  if (result.error) {
90
198
  if (result.error.code === 'ETIMEDOUT') {
91
- process.stderr.write(`[arkts-lsp] hvigor sync timed out after ${HVIGOR_TIMEOUT_MS / 1000}s\n`);
199
+ process.stderr.write(`[arkts-lsp] hvigor sync timed out after ${LEGACY_HVIGOR_TIMEOUT_MS / 1000}s\n`);
92
200
  return false;
93
201
  }
94
202
  process.stderr.write(`[arkts-lsp] hvigor sync error: ${result.error.message}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"hvigor.js","sourceRoot":"","sources":["../src/hvigor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hvigor.js","sourceRoot":"","sources":["../src/hvigor.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,13 +2,21 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const env_1 = require("./env");
5
- const project_1 = require("./project");
6
- const hvigor_1 = require("./hvigor");
7
- const ace_server_1 = require("./ace-server");
8
5
  const proxy_1 = require("./proxy");
6
+ function parseProjectRootHint() {
7
+ const args = process.argv.slice(2);
8
+ for (let i = 0; i < args.length; i += 1) {
9
+ if ((args[i] === '--project-root' || args[i] === '--root' || args[i] === '--cwd') && i + 1 < args.length) {
10
+ return args[i + 1];
11
+ }
12
+ if (args[i].startsWith('--project-root=')) {
13
+ return args[i].slice('--project-root='.length);
14
+ }
15
+ }
16
+ return undefined;
17
+ }
9
18
  function main() {
10
19
  process.stderr.write('[arkts-lsp] Starting ArkTS LSP Proxy\n');
11
- // Step 1: Find DevEco Studio
12
20
  const env = (0, env_1.findDevEcoEnv)();
13
21
  if (!env) {
14
22
  process.stderr.write('==============================================\n');
@@ -19,38 +27,10 @@ function main() {
19
27
  process.exit(1);
20
28
  }
21
29
  process.stderr.write(`[arkts-lsp] DevEco: ${env.devecoHome}\n`);
22
- // Step 2: Find project root
23
- const cwd = process.cwd();
24
- const projectRoot = (0, project_1.findProjectRoot)(cwd);
25
- if (!projectRoot) {
26
- process.stderr.write(`[arkts-lsp] No HarmonyOS project found at ${cwd}\n`);
27
- process.stderr.write('[arkts-lsp] Expected build-profile.json5 in current or parent directory\n');
28
- process.exit(1);
29
- }
30
- const project = (0, project_1.parseProject)(projectRoot, env.sdkPath);
31
- if (!project) {
32
- process.stderr.write(`[arkts-lsp] Failed to parse project at ${projectRoot}\n`);
33
- process.exit(1);
34
- }
35
- process.stderr.write(`[arkts-lsp] Project: ${project.projectRoot}\n`);
36
- process.stderr.write(`[arkts-lsp] Modules: ${project.modules.map(m => m.moduleName).join(', ')}\n`);
37
- // Step 3: Run hvigor sync
38
- const syncOk = (0, hvigor_1.runHvigorSync)(env, project.projectRoot);
39
- if (!syncOk) {
40
- process.stderr.write('[arkts-lsp] hvigor sync failed, continuing anyway\n');
41
- }
42
- // Step 4: Start ace-server
43
- const ace = (0, ace_server_1.startAceServer)(env);
44
- // Step 5: Set up LSP proxy
45
- const proxy = (0, proxy_1.createProxy)(process.stdin, process.stdout, ace.process, {
46
- rootUri: project.rootUri,
47
- lspServerWorkspacePath: project.lspServerWorkspacePath,
48
- modules: project.modules,
49
- });
50
- // Step 6: Handle cleanup
30
+ const projectRootHint = parseProjectRootHint();
31
+ const proxy = (0, proxy_1.createProxy)(process.stdin, process.stdout, env, { env, projectRootHint });
51
32
  const cleanup = () => {
52
33
  proxy.dispose();
53
- ace.kill();
54
34
  };
55
35
  process.on('SIGINT', () => {
56
36
  cleanup();
@@ -60,13 +40,7 @@ function main() {
60
40
  cleanup();
61
41
  process.exit(0);
62
42
  });
63
- process.stdin.on('end', () => {
64
- cleanup();
65
- });
66
- ace.onExit((code) => {
67
- proxy.dispose();
68
- process.exit(code ?? 1);
69
- });
43
+ process.stdin.on('end', cleanup);
70
44
  }
71
45
  main();
72
46
  //# sourceMappingURL=index.js.map
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":";;;AAEA,+BAAsC;AACtC,mCAAsC;AAEtC,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzG,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,IAAI;IACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,IAAA,mBAAa,GAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QACjF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;IAEhE,MAAM,eAAe,GAAG,oBAAoB,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IAExF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,IAAI,EAAE,CAAC"}