vibe-coding-mcp 2.3.0

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 (130) hide show
  1. package/README.md +179 -0
  2. package/dist/__tests__/collectCodeContext.test.d.ts +2 -0
  3. package/dist/__tests__/collectCodeContext.test.d.ts.map +1 -0
  4. package/dist/__tests__/collectCodeContext.test.js +139 -0
  5. package/dist/__tests__/collectCodeContext.test.js.map +1 -0
  6. package/dist/__tests__/createSessionLog.test.d.ts +2 -0
  7. package/dist/__tests__/createSessionLog.test.d.ts.map +1 -0
  8. package/dist/__tests__/createSessionLog.test.js +130 -0
  9. package/dist/__tests__/createSessionLog.test.js.map +1 -0
  10. package/dist/__tests__/generateDevDocument.test.d.ts +2 -0
  11. package/dist/__tests__/generateDevDocument.test.d.ts.map +1 -0
  12. package/dist/__tests__/generateDevDocument.test.js +174 -0
  13. package/dist/__tests__/generateDevDocument.test.js.map +1 -0
  14. package/dist/__tests__/normalizeForPlatform.test.d.ts +2 -0
  15. package/dist/__tests__/normalizeForPlatform.test.d.ts.map +1 -0
  16. package/dist/__tests__/normalizeForPlatform.test.js +171 -0
  17. package/dist/__tests__/normalizeForPlatform.test.js.map +1 -0
  18. package/dist/__tests__/publishDocument.test.d.ts +2 -0
  19. package/dist/__tests__/publishDocument.test.d.ts.map +1 -0
  20. package/dist/__tests__/publishDocument.test.js +93 -0
  21. package/dist/__tests__/publishDocument.test.js.map +1 -0
  22. package/dist/__tests__/summarizeDesignDecisions.test.d.ts +2 -0
  23. package/dist/__tests__/summarizeDesignDecisions.test.d.ts.map +1 -0
  24. package/dist/__tests__/summarizeDesignDecisions.test.js +158 -0
  25. package/dist/__tests__/summarizeDesignDecisions.test.js.map +1 -0
  26. package/dist/core/cache.d.ts +39 -0
  27. package/dist/core/cache.d.ts.map +1 -0
  28. package/dist/core/cache.js +112 -0
  29. package/dist/core/cache.js.map +1 -0
  30. package/dist/core/config.d.ts +30 -0
  31. package/dist/core/config.d.ts.map +1 -0
  32. package/dist/core/config.js +90 -0
  33. package/dist/core/config.js.map +1 -0
  34. package/dist/core/errors.d.ts +52 -0
  35. package/dist/core/errors.d.ts.map +1 -0
  36. package/dist/core/errors.js +99 -0
  37. package/dist/core/errors.js.map +1 -0
  38. package/dist/core/logger.d.ts +57 -0
  39. package/dist/core/logger.d.ts.map +1 -0
  40. package/dist/core/logger.js +114 -0
  41. package/dist/core/logger.js.map +1 -0
  42. package/dist/core/schemas.d.ts +690 -0
  43. package/dist/core/schemas.d.ts.map +1 -0
  44. package/dist/core/schemas.js +136 -0
  45. package/dist/core/schemas.js.map +1 -0
  46. package/dist/core/security.d.ts +28 -0
  47. package/dist/core/security.d.ts.map +1 -0
  48. package/dist/core/security.js +103 -0
  49. package/dist/core/security.js.map +1 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +168 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/platforms/confluence.d.ts +13 -0
  55. package/dist/platforms/confluence.d.ts.map +1 -0
  56. package/dist/platforms/confluence.js +178 -0
  57. package/dist/platforms/confluence.js.map +1 -0
  58. package/dist/platforms/discord.d.ts +54 -0
  59. package/dist/platforms/discord.d.ts.map +1 -0
  60. package/dist/platforms/discord.js +176 -0
  61. package/dist/platforms/discord.js.map +1 -0
  62. package/dist/platforms/github-wiki.d.ts +3 -0
  63. package/dist/platforms/github-wiki.d.ts.map +1 -0
  64. package/dist/platforms/github-wiki.js +120 -0
  65. package/dist/platforms/github-wiki.js.map +1 -0
  66. package/dist/platforms/notion.d.ts +3 -0
  67. package/dist/platforms/notion.d.ts.map +1 -0
  68. package/dist/platforms/notion.js +205 -0
  69. package/dist/platforms/notion.js.map +1 -0
  70. package/dist/platforms/obsidian.d.ts +3 -0
  71. package/dist/platforms/obsidian.d.ts.map +1 -0
  72. package/dist/platforms/obsidian.js +43 -0
  73. package/dist/platforms/obsidian.js.map +1 -0
  74. package/dist/platforms/slack.d.ts +21 -0
  75. package/dist/platforms/slack.d.ts.map +1 -0
  76. package/dist/platforms/slack.js +217 -0
  77. package/dist/platforms/slack.js.map +1 -0
  78. package/dist/stdio.d.ts +6 -0
  79. package/dist/stdio.d.ts.map +1 -0
  80. package/dist/stdio.js +98 -0
  81. package/dist/stdio.js.map +1 -0
  82. package/dist/tools/analyzeCode.d.ts +65 -0
  83. package/dist/tools/analyzeCode.d.ts.map +1 -0
  84. package/dist/tools/analyzeCode.js +113 -0
  85. package/dist/tools/analyzeCode.js.map +1 -0
  86. package/dist/tools/collectCodeContext.d.ts +86 -0
  87. package/dist/tools/collectCodeContext.d.ts.map +1 -0
  88. package/dist/tools/collectCodeContext.js +275 -0
  89. package/dist/tools/collectCodeContext.js.map +1 -0
  90. package/dist/tools/createSessionLog.d.ts +79 -0
  91. package/dist/tools/createSessionLog.d.ts.map +1 -0
  92. package/dist/tools/createSessionLog.js +160 -0
  93. package/dist/tools/createSessionLog.js.map +1 -0
  94. package/dist/tools/generateDevDocument.d.ts +216 -0
  95. package/dist/tools/generateDevDocument.d.ts.map +1 -0
  96. package/dist/tools/generateDevDocument.js +659 -0
  97. package/dist/tools/generateDevDocument.js.map +1 -0
  98. package/dist/tools/normalizeForPlatform.d.ts +95 -0
  99. package/dist/tools/normalizeForPlatform.d.ts.map +1 -0
  100. package/dist/tools/normalizeForPlatform.js +340 -0
  101. package/dist/tools/normalizeForPlatform.js.map +1 -0
  102. package/dist/tools/publishDocument.d.ts +60 -0
  103. package/dist/tools/publishDocument.d.ts.map +1 -0
  104. package/dist/tools/publishDocument.js +117 -0
  105. package/dist/tools/publishDocument.js.map +1 -0
  106. package/dist/tools/summarizeDesignDecisions.d.ts +82 -0
  107. package/dist/tools/summarizeDesignDecisions.d.ts.map +1 -0
  108. package/dist/tools/summarizeDesignDecisions.js +361 -0
  109. package/dist/tools/summarizeDesignDecisions.js.map +1 -0
  110. package/dist/types/index.d.ts +63 -0
  111. package/dist/types/index.d.ts.map +1 -0
  112. package/dist/types/index.js +2 -0
  113. package/dist/types/index.js.map +1 -0
  114. package/dist/utils/astParser.d.ts +55 -0
  115. package/dist/utils/astParser.d.ts.map +1 -0
  116. package/dist/utils/astParser.js +333 -0
  117. package/dist/utils/astParser.js.map +1 -0
  118. package/dist/utils/i18n.d.ts +67 -0
  119. package/dist/utils/i18n.d.ts.map +1 -0
  120. package/dist/utils/i18n.js +193 -0
  121. package/dist/utils/i18n.js.map +1 -0
  122. package/dist/utils/markdown.d.ts +9 -0
  123. package/dist/utils/markdown.d.ts.map +1 -0
  124. package/dist/utils/markdown.js +99 -0
  125. package/dist/utils/markdown.js.map +1 -0
  126. package/dist/utils/mermaidGenerator.d.ts +69 -0
  127. package/dist/utils/mermaidGenerator.d.ts.map +1 -0
  128. package/dist/utils/mermaidGenerator.js +315 -0
  129. package/dist/utils/mermaidGenerator.js.map +1 -0
  130. package/package.json +66 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * AST 기반 코드 분석 유틸리티
3
+ * 함수, 클래스, 의존성을 자동으로 추출
4
+ */
5
+ export interface FunctionInfo {
6
+ name: string;
7
+ params: string[];
8
+ returnType?: string;
9
+ async: boolean;
10
+ exported: boolean;
11
+ lineNumber?: number;
12
+ docstring?: string;
13
+ }
14
+ export interface ClassInfo {
15
+ name: string;
16
+ methods: FunctionInfo[];
17
+ properties: PropertyInfo[];
18
+ extends?: string;
19
+ implements?: string[];
20
+ exported: boolean;
21
+ lineNumber?: number;
22
+ docstring?: string;
23
+ }
24
+ export interface PropertyInfo {
25
+ name: string;
26
+ type?: string;
27
+ visibility: 'public' | 'private' | 'protected';
28
+ static: boolean;
29
+ }
30
+ export interface ImportInfo {
31
+ source: string;
32
+ imports: string[];
33
+ isDefault: boolean;
34
+ isNamespace: boolean;
35
+ }
36
+ export interface ExportInfo {
37
+ name: string;
38
+ type: 'function' | 'class' | 'variable' | 'type' | 'interface';
39
+ isDefault: boolean;
40
+ }
41
+ export interface CodeAnalysis {
42
+ language: string;
43
+ functions: FunctionInfo[];
44
+ classes: ClassInfo[];
45
+ imports: ImportInfo[];
46
+ exports: ExportInfo[];
47
+ dependencies: string[];
48
+ complexity: number;
49
+ lineCount: number;
50
+ }
51
+ export declare function analyzeTypeScript(code: string): CodeAnalysis;
52
+ export declare function analyzePython(code: string): CodeAnalysis;
53
+ export declare function analyzeGo(code: string): CodeAnalysis;
54
+ export declare const analyzeCode: (args_0: string, args_1: string | undefined) => CodeAnalysis;
55
+ //# sourceMappingURL=astParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astParser.d.ts","sourceRoot":"","sources":["../../src/utils/astParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkI5D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkFxD;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAqFpD;AAwDD,eAAO,MAAM,WAAW,8DAGvB,CAAC"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * AST 기반 코드 분석 유틸리티
3
+ * 함수, 클래스, 의존성을 자동으로 추출
4
+ */
5
+ import { memoize, hashCode } from '../core/cache.js';
6
+ // TypeScript/JavaScript 분석
7
+ export function analyzeTypeScript(code) {
8
+ const functions = [];
9
+ const classes = [];
10
+ const imports = [];
11
+ const exports = [];
12
+ const dependencies = [];
13
+ const lines = code.split('\n');
14
+ // Import 분석
15
+ const importRegex = /import\s+(?:(\w+)\s*,?\s*)?(?:\{([^}]+)\})?\s*(?:from\s+)?['"]([^'"]+)['"]/g;
16
+ const importTypeRegex = /import\s+type\s+\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/g;
17
+ let match;
18
+ while ((match = importRegex.exec(code)) !== null) {
19
+ const defaultImport = match[1];
20
+ const namedImports = match[2]?.split(',').map(s => s.trim().split(' as ')[0].trim()).filter(Boolean) || [];
21
+ const source = match[3];
22
+ imports.push({
23
+ source,
24
+ imports: defaultImport ? [defaultImport, ...namedImports] : namedImports,
25
+ isDefault: !!defaultImport,
26
+ isNamespace: false
27
+ });
28
+ if (!source.startsWith('.') && !source.startsWith('@/')) {
29
+ dependencies.push(source.split('/')[0]);
30
+ }
31
+ }
32
+ // 함수 분석
33
+ const functionRegex = /(?:(export)\s+)?(?:(async)\s+)?function\s+(\w+)\s*(?:<[^>]+>)?\s*\(([^)]*)\)(?:\s*:\s*([^\s{]+))?\s*\{/g;
34
+ const arrowFunctionRegex = /(?:(export)\s+)?(?:const|let|var)\s+(\w+)\s*(?::\s*[^=]+)?\s*=\s*(?:(async)\s+)?\([^)]*\)\s*(?::\s*([^\s=]+))?\s*=>/g;
35
+ while ((match = functionRegex.exec(code)) !== null) {
36
+ const lineNumber = code.substring(0, match.index).split('\n').length;
37
+ functions.push({
38
+ name: match[3],
39
+ params: match[4].split(',').map(p => p.trim().split(':')[0].trim()).filter(Boolean),
40
+ returnType: match[5],
41
+ async: !!match[2],
42
+ exported: !!match[1],
43
+ lineNumber
44
+ });
45
+ }
46
+ while ((match = arrowFunctionRegex.exec(code)) !== null) {
47
+ const lineNumber = code.substring(0, match.index).split('\n').length;
48
+ functions.push({
49
+ name: match[2],
50
+ params: [],
51
+ returnType: match[4],
52
+ async: !!match[3],
53
+ exported: !!match[1],
54
+ lineNumber
55
+ });
56
+ }
57
+ // 클래스 분석
58
+ const classRegex = /(?:(export)\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?(?:\s+implements\s+([^{]+))?\s*\{/g;
59
+ while ((match = classRegex.exec(code)) !== null) {
60
+ const className = match[2];
61
+ const lineNumber = code.substring(0, match.index).split('\n').length;
62
+ // 클래스 본문 추출
63
+ const classStart = match.index + match[0].length;
64
+ let braceCount = 1;
65
+ let classEnd = classStart;
66
+ for (let i = classStart; i < code.length && braceCount > 0; i++) {
67
+ if (code[i] === '{')
68
+ braceCount++;
69
+ if (code[i] === '}')
70
+ braceCount--;
71
+ classEnd = i;
72
+ }
73
+ const classBody = code.substring(classStart, classEnd);
74
+ const methods = [];
75
+ const properties = [];
76
+ // 메서드 추출
77
+ const methodRegex = /(?:(public|private|protected)\s+)?(?:(static)\s+)?(?:(async)\s+)?(\w+)\s*\([^)]*\)/g;
78
+ let methodMatch;
79
+ while ((methodMatch = methodRegex.exec(classBody)) !== null) {
80
+ if (!['constructor', 'if', 'for', 'while', 'switch'].includes(methodMatch[4])) {
81
+ methods.push({
82
+ name: methodMatch[4],
83
+ params: [],
84
+ async: !!methodMatch[3],
85
+ exported: false,
86
+ lineNumber: lineNumber + classBody.substring(0, methodMatch.index).split('\n').length
87
+ });
88
+ }
89
+ }
90
+ classes.push({
91
+ name: className,
92
+ methods,
93
+ properties,
94
+ extends: match[3],
95
+ implements: match[4]?.split(',').map(s => s.trim()),
96
+ exported: !!match[1],
97
+ lineNumber
98
+ });
99
+ }
100
+ // Export 분석
101
+ const exportRegex = /export\s+(?:(default)\s+)?(?:const|let|var|function|class|type|interface)\s+(\w+)/g;
102
+ while ((match = exportRegex.exec(code)) !== null) {
103
+ const exportType = code.substring(match.index).match(/export\s+(?:default\s+)?(const|let|var|function|class|type|interface)/)?.[1];
104
+ exports.push({
105
+ name: match[2],
106
+ type: exportType || 'variable',
107
+ isDefault: !!match[1]
108
+ });
109
+ }
110
+ // 복잡도 계산 (간단한 휴리스틱)
111
+ const complexity = calculateComplexity(code);
112
+ return {
113
+ language: 'typescript',
114
+ functions,
115
+ classes,
116
+ imports,
117
+ exports,
118
+ dependencies: [...new Set(dependencies)],
119
+ complexity,
120
+ lineCount: lines.length
121
+ };
122
+ }
123
+ // Python 분석
124
+ export function analyzePython(code) {
125
+ const functions = [];
126
+ const classes = [];
127
+ const imports = [];
128
+ const exports = [];
129
+ const dependencies = [];
130
+ const lines = code.split('\n');
131
+ // Import 분석
132
+ const importRegex = /^(?:from\s+(\S+)\s+)?import\s+(.+)$/gm;
133
+ let match;
134
+ while ((match = importRegex.exec(code)) !== null) {
135
+ const source = match[1] || match[2].split(',')[0].trim().split(' as ')[0];
136
+ const importNames = match[2].split(',').map(s => s.trim().split(' as ')[0].trim());
137
+ imports.push({
138
+ source,
139
+ imports: importNames,
140
+ isDefault: !match[1],
141
+ isNamespace: false
142
+ });
143
+ const pkgName = source.split('.')[0];
144
+ if (!pkgName.startsWith('.')) {
145
+ dependencies.push(pkgName);
146
+ }
147
+ }
148
+ // 함수 분석
149
+ const functionRegex = /^(\s*)(?:(async)\s+)?def\s+(\w+)\s*\(([^)]*)\)(?:\s*->\s*(\S+))?:/gm;
150
+ while ((match = functionRegex.exec(code)) !== null) {
151
+ const indent = match[1].length;
152
+ const lineNumber = code.substring(0, match.index).split('\n').length;
153
+ // 독스트링 추출
154
+ const afterDef = code.substring(match.index + match[0].length);
155
+ const docstringMatch = afterDef.match(/^\s*[']{3}([\s\S]*?)[']{3}|^\s*["]{3}([\s\S]*?)["]{3}/);
156
+ functions.push({
157
+ name: match[3],
158
+ params: match[4].split(',').map(p => p.trim().split(':')[0].split('=')[0].trim()).filter(Boolean),
159
+ returnType: match[5],
160
+ async: !!match[2],
161
+ exported: indent === 0 && !match[3].startsWith('_'),
162
+ lineNumber,
163
+ docstring: docstringMatch?.[1] || docstringMatch?.[2]
164
+ });
165
+ }
166
+ // 클래스 분석
167
+ const classRegex = /^class\s+(\w+)(?:\(([^)]*)\))?:/gm;
168
+ while ((match = classRegex.exec(code)) !== null) {
169
+ const className = match[1];
170
+ const lineNumber = code.substring(0, match.index).split('\n').length;
171
+ const parentClasses = match[2]?.split(',').map(s => s.trim()) || [];
172
+ classes.push({
173
+ name: className,
174
+ methods: [],
175
+ properties: [],
176
+ extends: parentClasses[0],
177
+ implements: parentClasses.slice(1),
178
+ exported: !className.startsWith('_'),
179
+ lineNumber
180
+ });
181
+ }
182
+ const complexity = calculateComplexity(code);
183
+ return {
184
+ language: 'python',
185
+ functions,
186
+ classes,
187
+ imports,
188
+ exports,
189
+ dependencies: [...new Set(dependencies)],
190
+ complexity,
191
+ lineCount: lines.length
192
+ };
193
+ }
194
+ // Go 분석
195
+ export function analyzeGo(code) {
196
+ const functions = [];
197
+ const classes = [];
198
+ const imports = [];
199
+ const exports = [];
200
+ const dependencies = [];
201
+ const lines = code.split('\n');
202
+ // Import 분석
203
+ const singleImportRegex = /import\s+"([^"]+)"/g;
204
+ const multiImportRegex = /import\s+\(([\s\S]*?)\)/g;
205
+ let match;
206
+ while ((match = singleImportRegex.exec(code)) !== null) {
207
+ imports.push({
208
+ source: match[1],
209
+ imports: [match[1].split('/').pop() || match[1]],
210
+ isDefault: false,
211
+ isNamespace: false
212
+ });
213
+ dependencies.push(match[1].split('/')[0]);
214
+ }
215
+ while ((match = multiImportRegex.exec(code)) !== null) {
216
+ const importBlock = match[1];
217
+ const importLines = importBlock.match(/"([^"]+)"/g) || [];
218
+ for (const imp of importLines) {
219
+ const source = imp.replace(/"/g, '');
220
+ imports.push({
221
+ source,
222
+ imports: [source.split('/').pop() || source],
223
+ isDefault: false,
224
+ isNamespace: false
225
+ });
226
+ dependencies.push(source.split('/')[0]);
227
+ }
228
+ }
229
+ // 함수 분석
230
+ const functionRegex = /func\s+(?:\((\w+)\s+\*?(\w+)\)\s+)?(\w+)\s*\(([^)]*)\)(?:\s*\(([^)]*)\)|\s*(\w+))?\s*\{/g;
231
+ while ((match = functionRegex.exec(code)) !== null) {
232
+ const lineNumber = code.substring(0, match.index).split('\n').length;
233
+ const isMethod = !!match[1];
234
+ const funcName = match[3];
235
+ functions.push({
236
+ name: funcName,
237
+ params: match[4].split(',').map(p => p.trim().split(' ')[0]).filter(Boolean),
238
+ returnType: match[5] || match[6],
239
+ async: false,
240
+ exported: funcName[0] === funcName[0].toUpperCase(),
241
+ lineNumber
242
+ });
243
+ }
244
+ // Struct 분석 (Go의 클래스 역할)
245
+ const structRegex = /type\s+(\w+)\s+struct\s*\{/g;
246
+ while ((match = structRegex.exec(code)) !== null) {
247
+ const structName = match[1];
248
+ const lineNumber = code.substring(0, match.index).split('\n').length;
249
+ classes.push({
250
+ name: structName,
251
+ methods: [],
252
+ properties: [],
253
+ exported: structName[0] === structName[0].toUpperCase(),
254
+ lineNumber
255
+ });
256
+ }
257
+ const complexity = calculateComplexity(code);
258
+ return {
259
+ language: 'go',
260
+ functions,
261
+ classes,
262
+ imports,
263
+ exports,
264
+ dependencies: [...new Set(dependencies)],
265
+ complexity,
266
+ lineCount: lines.length
267
+ };
268
+ }
269
+ // 복잡도 계산 (Cyclomatic Complexity 근사)
270
+ function calculateComplexity(code) {
271
+ let complexity = 1;
272
+ // 조건문/반복문 카운트
273
+ const patterns = [
274
+ /\bif\b/g,
275
+ /\belse\s+if\b/g,
276
+ /\bfor\b/g,
277
+ /\bwhile\b/g,
278
+ /\bcase\b/g,
279
+ /\bcatch\b/g,
280
+ /\?\s*.*\s*:/g, // 삼항 연산자
281
+ /&&/g,
282
+ /\|\|/g
283
+ ];
284
+ for (const pattern of patterns) {
285
+ const matches = code.match(pattern);
286
+ if (matches) {
287
+ complexity += matches.length;
288
+ }
289
+ }
290
+ return complexity;
291
+ }
292
+ // 언어 감지 및 분석 (내부 구현)
293
+ function analyzeCodeInternal(code, language) {
294
+ const detectedLanguage = language || detectLanguageForAnalysis(code);
295
+ switch (detectedLanguage) {
296
+ case 'typescript':
297
+ case 'javascript':
298
+ return analyzeTypeScript(code);
299
+ case 'python':
300
+ return analyzePython(code);
301
+ case 'go':
302
+ return analyzeGo(code);
303
+ default:
304
+ return {
305
+ language: detectedLanguage,
306
+ functions: [],
307
+ classes: [],
308
+ imports: [],
309
+ exports: [],
310
+ dependencies: [],
311
+ complexity: calculateComplexity(code),
312
+ lineCount: code.split('\n').length
313
+ };
314
+ }
315
+ }
316
+ // Memoized 버전 (캐시된 분석 결과 재사용)
317
+ export const analyzeCode = memoize(analyzeCodeInternal, (code, language) => `${language || 'auto'}:${hashCode(code)}`);
318
+ function detectLanguageForAnalysis(code) {
319
+ if (/^import\s+.*from\s+['"]|:\s*(string|number|boolean)\b/.test(code)) {
320
+ return 'typescript';
321
+ }
322
+ if (/^def\s+\w+|^class\s+\w+.*:$/m.test(code)) {
323
+ return 'python';
324
+ }
325
+ if (/^package\s+\w+|^func\s+/.test(code)) {
326
+ return 'go';
327
+ }
328
+ if (/^const\s+|^let\s+|^function\s+/.test(code)) {
329
+ return 'javascript';
330
+ }
331
+ return 'unknown';
332
+ }
333
+ //# sourceMappingURL=astParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/utils/astParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * 다국어 지원 유틸리티
3
+ * 한국어/영어 문서 동시 생성 지원
4
+ */
5
+ export type Language = 'ko' | 'en';
6
+ export interface TranslationStrings {
7
+ overview: string;
8
+ features: string;
9
+ installation: string;
10
+ usage: string;
11
+ api: string;
12
+ configuration: string;
13
+ examples: string;
14
+ contributing: string;
15
+ license: string;
16
+ changelog: string;
17
+ version: string;
18
+ author: string;
19
+ description: string;
20
+ parameters: string;
21
+ returns: string;
22
+ type: string;
23
+ required: string;
24
+ optional: string;
25
+ default: string;
26
+ example: string;
27
+ note: string;
28
+ warning: string;
29
+ tip: string;
30
+ install: string;
31
+ run: string;
32
+ build: string;
33
+ test: string;
34
+ deploy: string;
35
+ breaking: string;
36
+ added: string;
37
+ changed: string;
38
+ deprecated: string;
39
+ removed: string;
40
+ fixed: string;
41
+ security: string;
42
+ readme: string;
43
+ tutorial: string;
44
+ apiReference: string;
45
+ designDoc: string;
46
+ generatedOn: string;
47
+ lastUpdated: string;
48
+ tableOfContents: string;
49
+ gettingStarted: string;
50
+ prerequisites: string;
51
+ quickStart: string;
52
+ }
53
+ export declare function setLanguage(lang: Language): void;
54
+ export declare function getLanguage(): Language;
55
+ export declare function t(key: keyof TranslationStrings, lang?: Language): string;
56
+ export declare function tBilingual(key: keyof TranslationStrings): {
57
+ ko: string;
58
+ en: string;
59
+ };
60
+ export declare function formatDate(date: Date, lang?: Language): string;
61
+ export declare function translateCodeComment(comment: string, targetLang: Language): string;
62
+ export declare function translateMarkdownHeaders(markdown: string, lang: Language): string;
63
+ export declare function generateBilingualDocument(generator: (lang: Language) => string): {
64
+ ko: string;
65
+ en: string;
66
+ };
67
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAGlB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IAGZ,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAkHD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAEhD;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,kBAAkB,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAGxE;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,kBAAkB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAKpF;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAY9D;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,MAAM,CAiBlF;AAGD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAqCjF;AAGD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,GACpC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAK5B"}