jsdoc-builder 0.0.6 → 0.0.7

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.ko.md ADDED
@@ -0,0 +1,304 @@
1
+ # JSDoc Builder
2
+
3
+ [English](./README.MD) | [한국어](./README.ko.md) | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md)
4
+
5
+ JSDoc Builder는 JavaScript/TypeScript 코드에 JSDoc 주석을 자동으로 추가해주는 CLI/라이브러리입니다.
6
+ JavaScript, TypeScript, JSX, TSX, Vue SFC를 지원합니다.
7
+
8
+ ## 목차
9
+
10
+ - [개요](#개요)
11
+ - [주요 기능](#주요-기능)
12
+ - [설치](#설치)
13
+ - [빠른 시작](#빠른-시작)
14
+ - [CLI 사용법](#cli-사용법)
15
+ - [설정 파일](#설정-파일)
16
+ - [AI 제공자 (OpenAI, Gemini)](#ai-제공자-openai-gemini)
17
+ - [설명 언어 지원 (한국어/영어/중국어/일본어)](#설명-언어-지원-한국어영어중국어일본어)
18
+ - [Vite 플러그인](#vite-플러그인)
19
+ - [프로그래밍 API](#프로그래밍-api)
20
+ - [동작 특성](#동작-특성)
21
+ - [문제 해결](#문제-해결)
22
+ - [라이선스](#라이선스)
23
+
24
+ ## 개요
25
+
26
+ - 반복적인 JSDoc 작성 작업을 줄입니다.
27
+ - JS/TS/Vue 혼합 프로젝트에서 문서 형식을 일관되게 맞춥니다.
28
+ - 아래 방식으로 사용할 수 있습니다.
29
+ - CLI
30
+ - 라이브러리 API
31
+ - Vite 플러그인
32
+
33
+ ## 주요 기능
34
+
35
+ - 아래 대상에 JSDoc 생성:
36
+ - 함수 선언
37
+ - 변수에 할당된 화살표 함수
38
+ - 변수에 할당된 함수 표현식
39
+ - 지원 파일 확장자:
40
+ - `.js`, `.mjs`, `.cjs`
41
+ - `.ts`
42
+ - `.jsx`
43
+ - `.tsx`
44
+ - `.vue` (`<script>` 영역만 변경)
45
+ - 기존 JSDoc이 있으면 건너뜁니다.
46
+ - 파라미터/반환 타입을 가능한 범위에서 추론합니다.
47
+ - 템플릿 커스터마이징을 지원합니다.
48
+ - OpenAI/Gemini 기반 AI `@description` 생성을 지원합니다.
49
+ - API 키가 없거나 AI 요청 실패 시 안전 fallback으로 동작합니다.
50
+
51
+ ## 설치
52
+
53
+ 전역 설치:
54
+
55
+ ```bash
56
+ npm install -g jsdoc-builder
57
+ ```
58
+
59
+ 프로젝트 설치:
60
+
61
+ ```bash
62
+ npm install --save-dev jsdoc-builder
63
+ ```
64
+
65
+ ## 빠른 시작
66
+
67
+ 1. 파일 작성:
68
+
69
+ ```ts
70
+ function add(a: number, b: number) {
71
+ return a + b;
72
+ }
73
+ ```
74
+
75
+ 2. 실행:
76
+
77
+ ```bash
78
+ jsdoc-builder ./example.ts
79
+ ```
80
+
81
+ 3. 결과:
82
+
83
+ ```ts
84
+ /**
85
+ * @description add function
86
+ * @param {number} a
87
+ * @param {number} b
88
+ * @returns {number}
89
+ */
90
+ function add(a: number, b: number) {
91
+ return a + b;
92
+ }
93
+ ```
94
+
95
+ ## CLI 사용법
96
+
97
+ 기본:
98
+
99
+ ```bash
100
+ jsdoc-builder <file-path>
101
+ ```
102
+
103
+ 옵션:
104
+
105
+ ```bash
106
+ jsdoc-builder <file-path> --config ./jsdoc-builder.config.json
107
+ jsdoc-builder <file-path> --no-ai
108
+ ```
109
+
110
+ - `-c, --config <path>`: 설정 파일 경로 지정
111
+ - `--no-ai`: 설정에 AI가 켜져 있어도 강제로 AI 끔
112
+
113
+ ## 설정 파일
114
+
115
+ 기본 경로는 `./jsdoc-builder.config.json`입니다.
116
+
117
+ ```json
118
+ {
119
+ "template": {
120
+ "descriptionLine": "@description {{description}}",
121
+ "paramLine": "@param {${type}} ${name}",
122
+ "returnsLine": "@returns {${type}}"
123
+ },
124
+ "includeReturnsWhenVoid": true,
125
+ "ai": {
126
+ "enabled": true,
127
+ "provider": "openai",
128
+ "model": "gpt-4o-mini",
129
+ "apiKey": "YOUR_API_KEY",
130
+ "baseUrl": "https://api.openai.com/v1/chat/completions",
131
+ "timeoutMs": 12000,
132
+ "promptTemplate": "Write one concise sentence for '{{functionName}}'. Params: {{parameters}}. Return type: {{returnType}}. Source: {{sourceSnippet}}"
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### 설정 항목
138
+
139
+ - `template.descriptionLine`: 설명 라인 템플릿
140
+ - `template.paramLine`: 파라미터 라인 템플릿
141
+ - `template.returnsLine`: 반환 라인 템플릿
142
+ - `includeReturnsWhenVoid`: `false`면 `void` 함수에서 `@returns` 생략
143
+ - `ai.enabled`: AI 설명 생성 사용 여부
144
+ - `ai.provider`: `"openai"` 또는 `"gemini"`
145
+ - `ai.model`: 모델명
146
+ - `ai.apiKey`: API 키
147
+ - `ai.baseUrl`: API 엔드포인트 기본 URL
148
+ - `ai.timeoutMs`: 타임아웃(ms)
149
+ - `ai.promptTemplate`: 프롬프트 템플릿
150
+
151
+ ### 템플릿 플레이스홀더
152
+
153
+ - `{{functionName}}` / `${functionName}`
154
+ - `{{description}}` / `${description}`
155
+ - `{{type}}` / `${type}`
156
+ - `{{name}}` / `${name}`
157
+ - `{{returnType}}` / `${returnType}`
158
+ - `{{paramsCount}}` / `${paramsCount}`
159
+
160
+ ## AI 제공자 (OpenAI, Gemini)
161
+
162
+ OpenAI:
163
+
164
+ - `ai.provider`: `"openai"`
165
+ - 기본 모델: `gpt-4o-mini`
166
+ - 기본 URL: `https://api.openai.com/v1/chat/completions`
167
+ - 환경변수 키: `OPENAI_API_KEY`
168
+
169
+ Gemini:
170
+
171
+ - `ai.provider`: `"gemini"`
172
+ - 기본 모델: `gemini-1.5-flash`
173
+ - 기본 URL: `https://generativelanguage.googleapis.com/v1beta`
174
+ - 환경변수 키: `GEMINI_API_KEY` 또는 `GOOGLE_API_KEY`
175
+
176
+ Gemini 예시:
177
+
178
+ ```json
179
+ {
180
+ "ai": {
181
+ "enabled": true,
182
+ "provider": "gemini",
183
+ "model": "gemini-1.5-flash",
184
+ "apiKey": "YOUR_GEMINI_API_KEY"
185
+ }
186
+ }
187
+ ```
188
+
189
+ ### API 키가 없을 때
190
+
191
+ 1. provider에 맞는 환경변수 키를 확인합니다.
192
+ 2. 없으면 AI를 자동 비활성화합니다.
193
+ 3. `@description`은 `"<functionName> function"`으로 fallback 됩니다.
194
+
195
+ ## 설명 언어 지원 (한국어/영어/중국어/일본어)
196
+
197
+ 설명 언어는 `ai.promptTemplate`으로 제어할 수 있습니다.
198
+
199
+ 한국어 예시:
200
+
201
+ ```json
202
+ {
203
+ "ai": {
204
+ "enabled": true,
205
+ "provider": "openai",
206
+ "promptTemplate": "함수 '{{functionName}}'의 JSDoc 설명을 한국어 한 문장으로 작성해 주세요. 파라미터: {{parameters}}, 반환 타입: {{returnType}}"
207
+ }
208
+ }
209
+ ```
210
+
211
+ 중국어 예시:
212
+
213
+ ```json
214
+ {
215
+ "ai": {
216
+ "enabled": true,
217
+ "provider": "gemini",
218
+ "promptTemplate": "请用中文一句话编写函数 '{{functionName}}' 的 JSDoc 描述。参数: {{parameters}},返回类型: {{returnType}}"
219
+ }
220
+ }
221
+ ```
222
+
223
+ 일본어 예시:
224
+
225
+ ```json
226
+ {
227
+ "ai": {
228
+ "enabled": true,
229
+ "provider": "openai",
230
+ "promptTemplate": "関数 '{{functionName}}' の JSDoc 説明を日本語で1文で作成してください。引数: {{parameters}}、戻り値型: {{returnType}}"
231
+ }
232
+ }
233
+ ```
234
+
235
+ ## Vite 플러그인
236
+
237
+ ```ts
238
+ import { defineConfig } from "vite";
239
+ import { jsdocBuilderVitePlugin } from "jsdoc-builder/vite";
240
+
241
+ export default defineConfig({
242
+ plugins: [
243
+ jsdocBuilderVitePlugin({
244
+ apply: "serve",
245
+ configPath: "./jsdoc-builder.config.json",
246
+ include: ["src/"],
247
+ exclude: [/node_modules/, /dist/],
248
+ extensions: [".js", ".jsx", ".ts", ".tsx", ".vue"]
249
+ })
250
+ ]
251
+ });
252
+ ```
253
+
254
+ 옵션:
255
+
256
+ - `apply`: `"serve" | "build" | "both"` (기본값 `"both"`)
257
+ - `include`: 처리할 파일 필터
258
+ - `exclude`: 제외할 파일 필터
259
+ - `extensions`: 처리할 확장자
260
+ - `GenerateJSDocOptions`도 함께 사용 가능 (`configPath`, `config`, `disableAI`)
261
+
262
+ ## 프로그래밍 API
263
+
264
+ ```ts
265
+ import { generateJSDoc, generateJSDocFromCode } from "jsdoc-builder";
266
+
267
+ await generateJSDoc("./src/utils.ts", {
268
+ configPath: "./jsdoc-builder.config.json"
269
+ });
270
+
271
+ const output = await generateJSDocFromCode(
272
+ "/virtual/example.ts",
273
+ "const sum = (a, b) => a + b;",
274
+ {
275
+ config: {
276
+ ai: { enabled: false }
277
+ }
278
+ }
279
+ );
280
+
281
+ console.log(output);
282
+ ```
283
+
284
+ ## 동작 특성
285
+
286
+ - 기존 JSDoc은 유지됩니다.
287
+ - 변환 대상이 없으면 원본을 그대로 유지합니다.
288
+ - Vue 파일은 템플릿/스타일 블록을 건드리지 않습니다.
289
+ - AI 오류가 나도 전체 처리를 실패시키지 않습니다.
290
+
291
+ ## 문제 해결
292
+
293
+ - TypeScript 모듈 에러가 발생하면:
294
+ - `tsconfig.json`의 Node 타입/모듈 설정을 확인하세요.
295
+ - AI 설명이 생성되지 않으면:
296
+ - `ai.enabled: true` 확인
297
+ - API 키 설정 확인
298
+ - provider endpoint 연결 확인
299
+ - 설명 언어가 원하는 언어가 아니면:
300
+ - `ai.promptTemplate` 언어 지시문을 수정하세요.
301
+
302
+ ## 라이선스
303
+
304
+ MIT. [LICENSE](./LICENSE) 참고.
@@ -0,0 +1,304 @@
1
+ # JSDoc Builder
2
+
3
+ [English](./README.MD) | [한국어](./README.ko.md) | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md)
4
+
5
+ JSDoc Builder 是一个 CLI/库,用于自动为 JavaScript/TypeScript 代码生成 JSDoc 注释。
6
+ 支持 JavaScript、TypeScript、JSX、TSX、Vue SFC。
7
+
8
+ ## 目录
9
+
10
+ - [简介](#简介)
11
+ - [功能](#功能)
12
+ - [安装](#安装)
13
+ - [快速开始](#快速开始)
14
+ - [CLI 用法](#cli-用法)
15
+ - [配置文件](#配置文件)
16
+ - [AI 提供商 (OpenAI 和 Gemini)](#ai-提供商-openai-和-gemini)
17
+ - [描述语言支持(韩语/英语/中文/日语)](#描述语言支持韩语英语中文日语)
18
+ - [Vite 插件](#vite-插件)
19
+ - [编程 API](#编程-api)
20
+ - [行为与安全](#行为与安全)
21
+ - [故障排查](#故障排查)
22
+ - [许可证](#许可证)
23
+
24
+ ## 简介
25
+
26
+ - 减少重复编写 JSDoc 的工作量。
27
+ - 在 JS/TS/Vue 混合项目中保持注释风格一致。
28
+ - 支持以下方式:
29
+ - CLI
30
+ - 库 API
31
+ - Vite 插件
32
+
33
+ ## 功能
34
+
35
+ - 支持以下目标自动生成注释:
36
+ - 函数声明
37
+ - 赋值给变量的箭头函数
38
+ - 赋值给变量的函数表达式
39
+ - 支持文件类型:
40
+ - `.js`, `.mjs`, `.cjs`
41
+ - `.ts`
42
+ - `.jsx`
43
+ - `.tsx`
44
+ - `.vue`(仅修改 `<script>`)
45
+ - 已有 JSDoc 的节点会跳过。
46
+ - 尽可能推断参数与返回类型。
47
+ - 支持通过配置自定义模板。
48
+ - 支持 OpenAI/Gemini 生成 `@description`。
49
+ - 无 API Key 或 AI 请求失败时会安全降级。
50
+
51
+ ## 安装
52
+
53
+ 全局安装:
54
+
55
+ ```bash
56
+ npm install -g jsdoc-builder
57
+ ```
58
+
59
+ 项目内安装:
60
+
61
+ ```bash
62
+ npm install --save-dev jsdoc-builder
63
+ ```
64
+
65
+ ## 快速开始
66
+
67
+ 1. 示例文件:
68
+
69
+ ```ts
70
+ function add(a: number, b: number) {
71
+ return a + b;
72
+ }
73
+ ```
74
+
75
+ 2. 执行:
76
+
77
+ ```bash
78
+ jsdoc-builder ./example.ts
79
+ ```
80
+
81
+ 3. 输出:
82
+
83
+ ```ts
84
+ /**
85
+ * @description add function
86
+ * @param {number} a
87
+ * @param {number} b
88
+ * @returns {number}
89
+ */
90
+ function add(a: number, b: number) {
91
+ return a + b;
92
+ }
93
+ ```
94
+
95
+ ## CLI 用法
96
+
97
+ 基础命令:
98
+
99
+ ```bash
100
+ jsdoc-builder <file-path>
101
+ ```
102
+
103
+ 选项:
104
+
105
+ ```bash
106
+ jsdoc-builder <file-path> --config ./jsdoc-builder.config.json
107
+ jsdoc-builder <file-path> --no-ai
108
+ ```
109
+
110
+ - `-c, --config <path>`:指定配置文件路径
111
+ - `--no-ai`:即使配置中启用 AI,也强制关闭
112
+
113
+ ## 配置文件
114
+
115
+ 默认位置:`./jsdoc-builder.config.json`
116
+
117
+ ```json
118
+ {
119
+ "template": {
120
+ "descriptionLine": "@description {{description}}",
121
+ "paramLine": "@param {${type}} ${name}",
122
+ "returnsLine": "@returns {${type}}"
123
+ },
124
+ "includeReturnsWhenVoid": true,
125
+ "ai": {
126
+ "enabled": true,
127
+ "provider": "openai",
128
+ "model": "gpt-4o-mini",
129
+ "apiKey": "YOUR_API_KEY",
130
+ "baseUrl": "https://api.openai.com/v1/chat/completions",
131
+ "timeoutMs": 12000,
132
+ "promptTemplate": "Write one concise sentence for '{{functionName}}'. Params: {{parameters}}. Return type: {{returnType}}. Source: {{sourceSnippet}}"
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### 配置项说明
138
+
139
+ - `template.descriptionLine`:描述行模板
140
+ - `template.paramLine`:参数行模板
141
+ - `template.returnsLine`:返回行模板
142
+ - `includeReturnsWhenVoid`:为 `false` 时,`void` 函数不生成 `@returns`
143
+ - `ai.enabled`:是否启用 AI
144
+ - `ai.provider`:`"openai"` 或 `"gemini"`
145
+ - `ai.model`:模型名
146
+ - `ai.apiKey`:API Key
147
+ - `ai.baseUrl`:接口基础地址
148
+ - `ai.timeoutMs`:超时(毫秒)
149
+ - `ai.promptTemplate`:AI 提示词模板
150
+
151
+ ### 模板占位符
152
+
153
+ - `{{functionName}}` / `${functionName}`
154
+ - `{{description}}` / `${description}`
155
+ - `{{type}}` / `${type}`
156
+ - `{{name}}` / `${name}`
157
+ - `{{returnType}}` / `${returnType}`
158
+ - `{{paramsCount}}` / `${paramsCount}`
159
+
160
+ ## AI 提供商 (OpenAI 和 Gemini)
161
+
162
+ OpenAI:
163
+
164
+ - `ai.provider`: `"openai"`
165
+ - 默认模型:`gpt-4o-mini`
166
+ - 默认地址:`https://api.openai.com/v1/chat/completions`
167
+ - 环境变量:`OPENAI_API_KEY`
168
+
169
+ Gemini:
170
+
171
+ - `ai.provider`: `"gemini"`
172
+ - 默认模型:`gemini-1.5-flash`
173
+ - 默认地址:`https://generativelanguage.googleapis.com/v1beta`
174
+ - 环境变量:`GEMINI_API_KEY` 或 `GOOGLE_API_KEY`
175
+
176
+ Gemini 示例:
177
+
178
+ ```json
179
+ {
180
+ "ai": {
181
+ "enabled": true,
182
+ "provider": "gemini",
183
+ "model": "gemini-1.5-flash",
184
+ "apiKey": "YOUR_GEMINI_API_KEY"
185
+ }
186
+ }
187
+ ```
188
+
189
+ ### 没有 API Key 时的行为
190
+
191
+ 1. 按 provider 检查环境变量。
192
+ 2. 若仍为空,自动关闭 AI。
193
+ 3. `@description` 回退为 `"<functionName> function"`。
194
+
195
+ ## 描述语言支持(韩语/英语/中文/日语)
196
+
197
+ 可通过 `ai.promptTemplate` 控制生成语言。
198
+
199
+ 韩语示例:
200
+
201
+ ```json
202
+ {
203
+ "ai": {
204
+ "enabled": true,
205
+ "provider": "openai",
206
+ "promptTemplate": "함수 '{{functionName}}'의 JSDoc 설명을 한국어 한 문장으로 작성해 주세요. 파라미터: {{parameters}}, 반환 타입: {{returnType}}"
207
+ }
208
+ }
209
+ ```
210
+
211
+ 中文示例:
212
+
213
+ ```json
214
+ {
215
+ "ai": {
216
+ "enabled": true,
217
+ "provider": "gemini",
218
+ "promptTemplate": "请用中文一句话编写函数 '{{functionName}}' 的 JSDoc 描述。参数: {{parameters}},返回类型: {{returnType}}"
219
+ }
220
+ }
221
+ ```
222
+
223
+ 日语示例:
224
+
225
+ ```json
226
+ {
227
+ "ai": {
228
+ "enabled": true,
229
+ "provider": "openai",
230
+ "promptTemplate": "関数 '{{functionName}}' の JSDoc 説明を日本語で1文で作成してください。引数: {{parameters}}、戻り値型: {{returnType}}"
231
+ }
232
+ }
233
+ ```
234
+
235
+ ## Vite 插件
236
+
237
+ ```ts
238
+ import { defineConfig } from "vite";
239
+ import { jsdocBuilderVitePlugin } from "jsdoc-builder/vite";
240
+
241
+ export default defineConfig({
242
+ plugins: [
243
+ jsdocBuilderVitePlugin({
244
+ apply: "serve",
245
+ configPath: "./jsdoc-builder.config.json",
246
+ include: ["src/"],
247
+ exclude: [/node_modules/, /dist/],
248
+ extensions: [".js", ".jsx", ".ts", ".tsx", ".vue"]
249
+ })
250
+ ]
251
+ });
252
+ ```
253
+
254
+ 插件选项:
255
+
256
+ - `apply`:`"serve" | "build" | "both"`(默认 `"both"`)
257
+ - `include`:仅处理匹配文件
258
+ - `exclude`:排除匹配文件
259
+ - `extensions`:处理的扩展名
260
+ - 同时支持 `GenerateJSDocOptions`(`configPath`, `config`, `disableAI`)
261
+
262
+ ## 编程 API
263
+
264
+ ```ts
265
+ import { generateJSDoc, generateJSDocFromCode } from "jsdoc-builder";
266
+
267
+ await generateJSDoc("./src/utils.ts", {
268
+ configPath: "./jsdoc-builder.config.json"
269
+ });
270
+
271
+ const output = await generateJSDocFromCode(
272
+ "/virtual/example.ts",
273
+ "const sum = (a, b) => a + b;",
274
+ {
275
+ config: {
276
+ ai: { enabled: false }
277
+ }
278
+ }
279
+ );
280
+
281
+ console.log(output);
282
+ ```
283
+
284
+ ## 行为与安全
285
+
286
+ - 保留已有 JSDoc。
287
+ - 找不到可转换目标时,内容不变。
288
+ - Vue 文件只改 `<script>`,不改模板和样式。
289
+ - AI 失败不会中断流程,会使用 fallback 描述。
290
+
291
+ ## 故障排查
292
+
293
+ - TypeScript 模块错误:
294
+ - 检查 `tsconfig.json` 的 Node 类型和模块解析配置。
295
+ - AI 未生效:
296
+ - 检查 `ai.enabled: true`
297
+ - 检查 API Key(配置或环境变量)
298
+ - 检查 provider 地址可访问
299
+ - 语言不符合预期:
300
+ - 调整 `ai.promptTemplate` 的语言指令。
301
+
302
+ ## 许可证
303
+
304
+ MIT,见 [LICENSE](./LICENSE)。
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js CHANGED
@@ -1,12 +1,33 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
3
12
  Object.defineProperty(exports, "__esModule", { value: true });
4
13
  const commander_1 = require("commander");
5
14
  const index_1 = require("./index");
6
15
  commander_1.program
7
- .argument("<file>", "The TypeScript or JavaScript file to process")
8
- .description("Generate JSDoc comments for the given TypeScript or JavaScript file")
9
- .action((file) => {
10
- (0, index_1.generateJSDoc)(file);
11
- });
16
+ .argument("<file>", "The TypeScript, JavaScript, JSX, TSX, or Vue file to process")
17
+ .option("-c, --config <path>", "Path to jsdoc-builder config file")
18
+ .option("--no-ai", "Disable AI description generation")
19
+ .description("Generate JSDoc comments for the given TypeScript, JavaScript, JSX, TSX, or Vue file")
20
+ .action((file, options) => __awaiter(void 0, void 0, void 0, function* () {
21
+ try {
22
+ yield (0, index_1.generateJSDoc)(file, {
23
+ configPath: options.config,
24
+ disableAI: options.ai === false,
25
+ });
26
+ }
27
+ catch (error) {
28
+ const message = error instanceof Error ? error.message : String(error);
29
+ console.error(`Failed to generate JSDoc: ${message}`);
30
+ process.exitCode = 1;
31
+ }
32
+ }));
12
33
  commander_1.program.parse(process.argv);
@@ -0,0 +1,33 @@
1
+ type AIProvider = "openai" | "gemini";
2
+ interface JSDocTemplateConfig {
3
+ descriptionLine?: string;
4
+ paramLine?: string;
5
+ returnsLine?: string;
6
+ }
7
+ interface AIConfig {
8
+ provider?: AIProvider;
9
+ enabled?: boolean;
10
+ apiKey?: string;
11
+ model?: string;
12
+ baseUrl?: string;
13
+ timeoutMs?: number;
14
+ promptTemplate?: string;
15
+ }
16
+ export interface JSDocBuilderConfig {
17
+ template?: JSDocTemplateConfig;
18
+ ai?: AIConfig;
19
+ includeReturnsWhenVoid?: boolean;
20
+ }
21
+ export interface GenerateJSDocOptions {
22
+ configPath?: string;
23
+ config?: JSDocBuilderConfig;
24
+ disableAI?: boolean;
25
+ }
26
+ /**
27
+ * Parses a TypeScript, JavaScript, JSX, TSX, or Vue file and adds JSDoc comments to functions.
28
+ * Skips functions that already have JSDoc comments.
29
+ * @param filePath - The path of the file to process.
30
+ */
31
+ export declare function generateJSDoc(filePath: string, options?: GenerateJSDocOptions): Promise<void>;
32
+ export declare function generateJSDocFromCode(filePath: string, code: string, options?: GenerateJSDocOptions): Promise<string>;
33
+ export {};