@refrakt-md/cli 0.5.0 → 0.5.1

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 (43) hide show
  1. package/dist/bin.js +222 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/edit.d.ts +8 -0
  4. package/dist/commands/edit.d.ts.map +1 -0
  5. package/dist/commands/edit.js +100 -0
  6. package/dist/commands/edit.js.map +1 -0
  7. package/dist/commands/extract.d.ts +10 -0
  8. package/dist/commands/extract.d.ts.map +1 -0
  9. package/dist/commands/extract.js +158 -0
  10. package/dist/commands/extract.js.map +1 -0
  11. package/dist/commands/theme.d.ts +10 -0
  12. package/dist/commands/theme.d.ts.map +1 -0
  13. package/dist/commands/theme.js +160 -0
  14. package/dist/commands/theme.js.map +1 -0
  15. package/dist/config-file.d.ts +15 -0
  16. package/dist/config-file.d.ts.map +1 -0
  17. package/dist/config-file.js +47 -0
  18. package/dist/config-file.js.map +1 -0
  19. package/dist/extractors/index.d.ts +3 -0
  20. package/dist/extractors/index.d.ts.map +1 -0
  21. package/dist/extractors/index.js +15 -0
  22. package/dist/extractors/index.js.map +1 -0
  23. package/dist/extractors/python.d.ts +6 -0
  24. package/dist/extractors/python.d.ts.map +1 -0
  25. package/dist/extractors/python.js +8 -0
  26. package/dist/extractors/python.js.map +1 -0
  27. package/dist/extractors/types.d.ts +55 -0
  28. package/dist/extractors/types.d.ts.map +1 -0
  29. package/dist/extractors/types.js +2 -0
  30. package/dist/extractors/types.js.map +1 -0
  31. package/dist/extractors/typescript.d.ts +28 -0
  32. package/dist/extractors/typescript.d.ts.map +1 -0
  33. package/dist/extractors/typescript.js +566 -0
  34. package/dist/extractors/typescript.js.map +1 -0
  35. package/dist/lib/layout-generator.d.ts +8 -0
  36. package/dist/lib/layout-generator.d.ts.map +1 -0
  37. package/dist/lib/layout-generator.js +22 -0
  38. package/dist/lib/layout-generator.js.map +1 -0
  39. package/dist/lib/symbol-generator.d.ts +14 -0
  40. package/dist/lib/symbol-generator.d.ts.map +1 -0
  41. package/dist/lib/symbol-generator.js +202 -0
  42. package/dist/lib/symbol-generator.js.map +1 -0
  43. package/package.json +8 -6
@@ -0,0 +1,566 @@
1
+ import ts from 'typescript';
2
+ import { resolve, relative, dirname } from 'node:path';
3
+ import { readdirSync, statSync, existsSync } from 'node:fs';
4
+ function getJSDocDescription(node) {
5
+ const jsDocs = node.jsDoc;
6
+ if (!jsDocs || jsDocs.length === 0)
7
+ return '';
8
+ const doc = jsDocs[jsDocs.length - 1];
9
+ if (!doc.comment)
10
+ return '';
11
+ if (typeof doc.comment === 'string')
12
+ return doc.comment;
13
+ return doc.comment.map((c) => c.text ?? '').join('');
14
+ }
15
+ function extractJSDoc(node) {
16
+ const description = getJSDocDescription(node);
17
+ const params = new Map();
18
+ let returns;
19
+ let since;
20
+ let deprecated;
21
+ const throws = [];
22
+ const tags = ts.getJSDocTags(node);
23
+ for (const tag of tags) {
24
+ const tagName = tag.tagName.text;
25
+ const comment = typeof tag.comment === 'string'
26
+ ? tag.comment
27
+ : tag.comment?.map((c) => c.text ?? '').join('') ?? '';
28
+ switch (tagName) {
29
+ case 'param': {
30
+ const paramTag = tag;
31
+ const name = paramTag.name?.getText() ?? '';
32
+ if (name)
33
+ params.set(name, comment);
34
+ break;
35
+ }
36
+ case 'returns':
37
+ case 'return':
38
+ returns = comment;
39
+ break;
40
+ case 'since':
41
+ since = comment.trim();
42
+ break;
43
+ case 'deprecated':
44
+ deprecated = comment.trim() || 'true';
45
+ break;
46
+ case 'throws':
47
+ case 'throw':
48
+ throws.push(comment);
49
+ break;
50
+ }
51
+ }
52
+ return { description, params, returns, since, deprecated, throws };
53
+ }
54
+ function getLineNumber(node, sourceFile) {
55
+ return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
56
+ }
57
+ function findTsFiles(dir) {
58
+ const files = [];
59
+ const entries = readdirSync(dir);
60
+ for (const entry of entries) {
61
+ if (entry === 'node_modules' || entry.startsWith('.'))
62
+ continue;
63
+ const fullPath = resolve(dir, entry);
64
+ const stat = statSync(fullPath);
65
+ if (stat.isDirectory()) {
66
+ files.push(...findTsFiles(fullPath));
67
+ }
68
+ else if (/\.tsx?$/.test(entry) && !entry.endsWith('.d.ts') && !entry.endsWith('.test.ts') && !entry.endsWith('.spec.ts')) {
69
+ files.push(fullPath);
70
+ }
71
+ }
72
+ return files;
73
+ }
74
+ export class TypeScriptExtractor {
75
+ program;
76
+ checker;
77
+ rootDir;
78
+ sourceUrl;
79
+ constructor(rootDir, sourceUrl) {
80
+ this.rootDir = resolve(rootDir);
81
+ this.sourceUrl = sourceUrl;
82
+ const configPath = ts.findConfigFile(this.rootDir, ts.sys.fileExists, 'tsconfig.json');
83
+ if (configPath) {
84
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
85
+ const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, dirname(configPath));
86
+ this.program = ts.createProgram(parsed.fileNames, parsed.options);
87
+ }
88
+ else {
89
+ const files = findTsFiles(this.rootDir);
90
+ this.program = ts.createProgram(files, {
91
+ target: ts.ScriptTarget.ESNext,
92
+ module: ts.ModuleKind.NodeNext,
93
+ moduleResolution: ts.ModuleResolutionKind.NodeNext,
94
+ });
95
+ }
96
+ this.checker = this.program.getTypeChecker();
97
+ }
98
+ extractFile(filePath) {
99
+ const absPath = resolve(filePath);
100
+ const sourceFile = this.program.getSourceFile(absPath);
101
+ if (!sourceFile)
102
+ return { symbols: [], filePath: absPath };
103
+ const fileSymbol = this.checker.getSymbolAtLocation(sourceFile);
104
+ if (!fileSymbol)
105
+ return { symbols: [], filePath: absPath };
106
+ const exports = this.checker.getExportsOfModule(fileSymbol);
107
+ const symbols = [];
108
+ for (const exp of exports) {
109
+ const doc = this.extractExport(exp, sourceFile);
110
+ if (doc)
111
+ symbols.push(doc);
112
+ }
113
+ return { symbols, filePath: absPath };
114
+ }
115
+ extractExport(symbol, sourceFile) {
116
+ // Resolve aliases (re-exports)
117
+ let resolved = symbol;
118
+ if (resolved.flags & ts.SymbolFlags.Alias) {
119
+ resolved = this.checker.getAliasedSymbol(resolved);
120
+ }
121
+ const declarations = resolved.getDeclarations();
122
+ if (!declarations || declarations.length === 0)
123
+ return null;
124
+ const decl = declarations[0];
125
+ // Skip re-exports from other files
126
+ if (decl.getSourceFile() !== sourceFile)
127
+ return null;
128
+ const name = symbol.getName();
129
+ if (ts.isFunctionDeclaration(decl)) {
130
+ return this.extractFunction(name, resolved, decl, sourceFile);
131
+ }
132
+ if (ts.isClassDeclaration(decl)) {
133
+ return this.extractClass(name, resolved, decl, sourceFile);
134
+ }
135
+ if (ts.isInterfaceDeclaration(decl)) {
136
+ return this.extractInterface(name, resolved, decl, sourceFile);
137
+ }
138
+ if (ts.isEnumDeclaration(decl)) {
139
+ return this.extractEnum(name, resolved, decl, sourceFile);
140
+ }
141
+ if (ts.isTypeAliasDeclaration(decl)) {
142
+ return this.extractTypeAlias(name, resolved, decl, sourceFile);
143
+ }
144
+ if (ts.isVariableDeclaration(decl)) {
145
+ return this.extractVariable(name, resolved, decl, sourceFile);
146
+ }
147
+ return null;
148
+ }
149
+ extractFunction(name, symbol, decl, sourceFile) {
150
+ const jsDoc = extractJSDoc(decl);
151
+ const kind = name.startsWith('use') && /^use[A-Z]/.test(name) ? 'hook' : 'function';
152
+ const type = this.checker.getTypeOfSymbolAtLocation(symbol, decl);
153
+ const signatures = type.getCallSignatures();
154
+ const signature = signatures.length > 0
155
+ ? this.checker.signatureToString(signatures[0], decl, ts.TypeFormatFlags.WriteArrowStyleSignature | ts.TypeFormatFlags.NoTruncation)
156
+ : this.checker.typeToString(type, decl, ts.TypeFormatFlags.NoTruncation);
157
+ const parameters = this.extractParameters(decl.parameters, jsDoc);
158
+ const returns = this.extractReturn(signatures[0], jsDoc);
159
+ const throws = this.extractThrows(jsDoc);
160
+ return {
161
+ name, kind, signature,
162
+ description: jsDoc.description,
163
+ parameters: parameters.length > 0 ? parameters : undefined,
164
+ returns, throws: throws.length > 0 ? throws : undefined,
165
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
166
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
167
+ filePath: sourceFile.fileName,
168
+ line: getLineNumber(decl, sourceFile),
169
+ };
170
+ }
171
+ extractVariable(name, symbol, decl, sourceFile) {
172
+ const type = this.checker.getTypeOfSymbolAtLocation(symbol, decl);
173
+ const callSigs = type.getCallSignatures();
174
+ // If the variable is a function (arrow function or function expression)
175
+ if (callSigs.length > 0) {
176
+ // Get JSDoc from the variable statement, not the declaration
177
+ const varStatement = decl.parent?.parent;
178
+ const jsDoc = varStatement ? extractJSDoc(varStatement) : extractJSDoc(decl);
179
+ const kind = name.startsWith('use') && /^use[A-Z]/.test(name) ? 'hook' : 'function';
180
+ const signature = this.checker.signatureToString(callSigs[0], decl, ts.TypeFormatFlags.WriteArrowStyleSignature | ts.TypeFormatFlags.NoTruncation);
181
+ // Try to get parameters from the initializer if it's an arrow function
182
+ let parameters = [];
183
+ if (decl.initializer && (ts.isArrowFunction(decl.initializer) || ts.isFunctionExpression(decl.initializer))) {
184
+ parameters = this.extractParameters(decl.initializer.parameters, jsDoc);
185
+ }
186
+ const returns = this.extractReturn(callSigs[0], jsDoc);
187
+ const throws = this.extractThrows(jsDoc);
188
+ return {
189
+ name, kind, signature,
190
+ description: jsDoc.description,
191
+ parameters: parameters.length > 0 ? parameters : undefined,
192
+ returns, throws: throws.length > 0 ? throws : undefined,
193
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
194
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
195
+ filePath: sourceFile.fileName,
196
+ line: getLineNumber(decl, sourceFile),
197
+ };
198
+ }
199
+ // Non-function variable — treat as a constant/value
200
+ const varStatement = decl.parent?.parent;
201
+ const jsDoc = varStatement ? extractJSDoc(varStatement) : extractJSDoc(decl);
202
+ const typeStr = this.checker.typeToString(type, decl, ts.TypeFormatFlags.NoTruncation);
203
+ return {
204
+ name, kind: 'function', // use 'function' kind for exported constants since there's no 'const' kind
205
+ signature: `const ${name}: ${typeStr}`,
206
+ description: jsDoc.description,
207
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
208
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
209
+ filePath: sourceFile.fileName,
210
+ line: getLineNumber(decl, sourceFile),
211
+ };
212
+ }
213
+ extractClass(name, _symbol, decl, sourceFile) {
214
+ const jsDoc = extractJSDoc(decl);
215
+ // Build class signature
216
+ let signature = `class ${name}`;
217
+ if (decl.heritageClauses) {
218
+ for (const clause of decl.heritageClauses) {
219
+ const keyword = clause.token === ts.SyntaxKind.ExtendsKeyword ? 'extends' : 'implements';
220
+ const types = clause.types.map(t => t.getText(sourceFile)).join(', ');
221
+ signature += ` ${keyword} ${types}`;
222
+ }
223
+ }
224
+ const groups = this.extractClassMembers(decl, sourceFile);
225
+ return {
226
+ name, kind: 'class', signature,
227
+ description: jsDoc.description,
228
+ groups: groups.length > 0 ? groups : undefined,
229
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
230
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
231
+ filePath: sourceFile.fileName,
232
+ line: getLineNumber(decl, sourceFile),
233
+ };
234
+ }
235
+ extractClassMembers(decl, sourceFile) {
236
+ const constructors = [];
237
+ const properties = [];
238
+ const methods = [];
239
+ const staticProperties = [];
240
+ const staticMethods = [];
241
+ const accessors = [];
242
+ for (const member of decl.members) {
243
+ if (this.isPrivateOrProtected(member))
244
+ continue;
245
+ const isStatic = this.hasModifier(member, ts.SyntaxKind.StaticKeyword);
246
+ if (ts.isConstructorDeclaration(member)) {
247
+ constructors.push(this.extractMemberDoc(member, 'constructor', sourceFile));
248
+ }
249
+ else if (ts.isPropertyDeclaration(member)) {
250
+ const doc = this.extractMemberDoc(member, 'property', sourceFile);
251
+ if (isStatic)
252
+ staticProperties.push(doc);
253
+ else
254
+ properties.push(doc);
255
+ }
256
+ else if (ts.isMethodDeclaration(member)) {
257
+ const doc = this.extractMemberDoc(member, 'method', sourceFile);
258
+ if (isStatic)
259
+ staticMethods.push(doc);
260
+ else
261
+ methods.push(doc);
262
+ }
263
+ else if (ts.isGetAccessorDeclaration(member) || ts.isSetAccessorDeclaration(member)) {
264
+ accessors.push(this.extractMemberDoc(member, 'accessor', sourceFile));
265
+ }
266
+ }
267
+ const groups = [];
268
+ if (constructors.length > 0)
269
+ groups.push({ label: 'Constructor', members: constructors });
270
+ if (properties.length > 0)
271
+ groups.push({ label: 'Properties', members: properties });
272
+ if (methods.length > 0)
273
+ groups.push({ label: 'Methods', members: methods });
274
+ if (staticProperties.length > 0)
275
+ groups.push({ label: 'Static Properties', members: staticProperties });
276
+ if (staticMethods.length > 0)
277
+ groups.push({ label: 'Static Methods', members: staticMethods });
278
+ if (accessors.length > 0)
279
+ groups.push({ label: 'Accessors', members: accessors });
280
+ return groups;
281
+ }
282
+ extractInterface(name, _symbol, decl, sourceFile) {
283
+ const jsDoc = extractJSDoc(decl);
284
+ let signature = `interface ${name}`;
285
+ if (decl.heritageClauses) {
286
+ for (const clause of decl.heritageClauses) {
287
+ const types = clause.types.map(t => t.getText(sourceFile)).join(', ');
288
+ signature += ` extends ${types}`;
289
+ }
290
+ }
291
+ if (decl.typeParameters && decl.typeParameters.length > 0) {
292
+ const params = decl.typeParameters.map(tp => tp.getText(sourceFile)).join(', ');
293
+ signature = `interface ${name}<${params}>` + signature.slice(`interface ${name}`.length);
294
+ }
295
+ const groups = this.extractInterfaceMembers(decl, sourceFile);
296
+ return {
297
+ name, kind: 'interface', signature,
298
+ description: jsDoc.description,
299
+ groups: groups.length > 0 ? groups : undefined,
300
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
301
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
302
+ filePath: sourceFile.fileName,
303
+ line: getLineNumber(decl, sourceFile),
304
+ };
305
+ }
306
+ extractInterfaceMembers(decl, sourceFile) {
307
+ const properties = [];
308
+ const methods = [];
309
+ const indexSignatures = [];
310
+ for (const member of decl.members) {
311
+ if (ts.isPropertySignature(member)) {
312
+ properties.push(this.extractMemberDoc(member, 'property', sourceFile));
313
+ }
314
+ else if (ts.isMethodSignature(member)) {
315
+ methods.push(this.extractMemberDoc(member, 'method', sourceFile));
316
+ }
317
+ else if (ts.isIndexSignatureDeclaration(member)) {
318
+ indexSignatures.push(this.extractMemberDoc(member, 'index-signature', sourceFile));
319
+ }
320
+ }
321
+ const groups = [];
322
+ if (properties.length > 0)
323
+ groups.push({ label: 'Properties', members: properties });
324
+ if (methods.length > 0)
325
+ groups.push({ label: 'Methods', members: methods });
326
+ if (indexSignatures.length > 0)
327
+ groups.push({ label: 'Index Signatures', members: indexSignatures });
328
+ return groups;
329
+ }
330
+ extractEnum(name, _symbol, decl, sourceFile) {
331
+ const jsDoc = extractJSDoc(decl);
332
+ const parameters = [];
333
+ for (const member of decl.members) {
334
+ const memberName = member.name.getText(sourceFile);
335
+ const memberJsDoc = extractJSDoc(member);
336
+ let value = '';
337
+ if (member.initializer) {
338
+ value = member.initializer.getText(sourceFile);
339
+ }
340
+ else {
341
+ // Computed enum value
342
+ const memberSymbol = this.checker.getSymbolAtLocation(member.name);
343
+ if (memberSymbol) {
344
+ const constantValue = this.checker.getConstantValue(member);
345
+ if (constantValue !== undefined) {
346
+ value = typeof constantValue === 'string' ? `"${constantValue}"` : String(constantValue);
347
+ }
348
+ }
349
+ }
350
+ parameters.push({
351
+ name: memberName,
352
+ type: value,
353
+ description: memberJsDoc.description,
354
+ optional: false,
355
+ });
356
+ }
357
+ return {
358
+ name, kind: 'enum',
359
+ signature: `enum ${name}`,
360
+ description: jsDoc.description,
361
+ parameters: parameters.length > 0 ? parameters : undefined,
362
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
363
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
364
+ filePath: sourceFile.fileName,
365
+ line: getLineNumber(decl, sourceFile),
366
+ };
367
+ }
368
+ extractTypeAlias(name, _symbol, decl, sourceFile) {
369
+ const jsDoc = extractJSDoc(decl);
370
+ const typeNode = decl.type;
371
+ const typeText = typeNode.getText(sourceFile);
372
+ let signature = `type ${name}`;
373
+ if (decl.typeParameters && decl.typeParameters.length > 0) {
374
+ const params = decl.typeParameters.map(tp => tp.getText(sourceFile)).join(', ');
375
+ signature += `<${params}>`;
376
+ }
377
+ signature += ` = ${typeText}`;
378
+ return {
379
+ name, kind: 'type', signature,
380
+ description: jsDoc.description,
381
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
382
+ source: this.buildSourceUrl(sourceFile.fileName, getLineNumber(decl, sourceFile)),
383
+ filePath: sourceFile.fileName,
384
+ line: getLineNumber(decl, sourceFile),
385
+ };
386
+ }
387
+ extractMemberDoc(member, kind, sourceFile) {
388
+ const jsDoc = extractJSDoc(member);
389
+ let name = '';
390
+ let signature = '';
391
+ let parameters;
392
+ let returns;
393
+ let throws;
394
+ if (ts.isConstructorDeclaration(member)) {
395
+ name = 'constructor';
396
+ const paramTexts = member.parameters.map(p => p.getText(sourceFile)).join(', ');
397
+ signature = `new (${paramTexts})`;
398
+ parameters = this.extractParameters(member.parameters, jsDoc);
399
+ }
400
+ else if (ts.isMethodDeclaration(member) || ts.isMethodSignature(member)) {
401
+ name = member.name?.getText(sourceFile) ?? '';
402
+ const memberSymbol = member.name ? this.checker.getSymbolAtLocation(member.name) : undefined;
403
+ if (memberSymbol) {
404
+ const type = this.checker.getTypeOfSymbolAtLocation(memberSymbol, member);
405
+ const callSigs = type.getCallSignatures();
406
+ if (callSigs.length > 0) {
407
+ signature = `${name}${this.checker.signatureToString(callSigs[0], member, ts.TypeFormatFlags.NoTruncation)}`;
408
+ }
409
+ else {
410
+ signature = member.getText(sourceFile);
411
+ }
412
+ }
413
+ else {
414
+ signature = member.getText(sourceFile);
415
+ }
416
+ if ('parameters' in member) {
417
+ parameters = this.extractParameters(member.parameters, jsDoc);
418
+ }
419
+ const memberSymbol2 = member.name ? this.checker.getSymbolAtLocation(member.name) : undefined;
420
+ if (memberSymbol2) {
421
+ const type = this.checker.getTypeOfSymbolAtLocation(memberSymbol2, member);
422
+ const callSigs = type.getCallSignatures();
423
+ if (callSigs.length > 0) {
424
+ returns = this.extractReturn(callSigs[0], jsDoc);
425
+ }
426
+ }
427
+ const throwsDocs = this.extractThrows(jsDoc);
428
+ if (throwsDocs.length > 0)
429
+ throws = throwsDocs;
430
+ }
431
+ else if (ts.isPropertyDeclaration(member) || ts.isPropertySignature(member)) {
432
+ name = member.name?.getText(sourceFile) ?? '';
433
+ const memberSymbol = member.name ? this.checker.getSymbolAtLocation(member.name) : undefined;
434
+ if (memberSymbol) {
435
+ const type = this.checker.getTypeOfSymbolAtLocation(memberSymbol, member);
436
+ const typeStr = this.checker.typeToString(type, member, ts.TypeFormatFlags.NoTruncation);
437
+ const optional = member.questionToken ? '?' : '';
438
+ signature = `${name}${optional}: ${typeStr}`;
439
+ }
440
+ else {
441
+ signature = member.getText(sourceFile);
442
+ }
443
+ }
444
+ else if (ts.isGetAccessorDeclaration(member)) {
445
+ name = member.name?.getText(sourceFile) ?? '';
446
+ const memberSymbol = member.name ? this.checker.getSymbolAtLocation(member.name) : undefined;
447
+ if (memberSymbol) {
448
+ const type = this.checker.getTypeOfSymbolAtLocation(memberSymbol, member);
449
+ const typeStr = this.checker.typeToString(type, member, ts.TypeFormatFlags.NoTruncation);
450
+ signature = `get ${name}(): ${typeStr}`;
451
+ }
452
+ else {
453
+ signature = member.getText(sourceFile);
454
+ }
455
+ }
456
+ else if (ts.isSetAccessorDeclaration(member)) {
457
+ name = member.name?.getText(sourceFile) ?? '';
458
+ signature = member.getText(sourceFile);
459
+ }
460
+ else if (ts.isIndexSignatureDeclaration(member)) {
461
+ name = '[index]';
462
+ signature = member.getText(sourceFile);
463
+ }
464
+ return {
465
+ name, kind, signature,
466
+ description: jsDoc.description,
467
+ parameters: parameters && parameters.length > 0 ? parameters : undefined,
468
+ returns, throws,
469
+ since: jsDoc.since, deprecated: jsDoc.deprecated,
470
+ };
471
+ }
472
+ extractParameters(params, jsDoc) {
473
+ return params.map(param => {
474
+ const name = param.name.getText();
475
+ const paramSymbol = this.checker.getSymbolAtLocation(param.name);
476
+ let type = 'unknown';
477
+ if (paramSymbol) {
478
+ const paramType = this.checker.getTypeOfSymbolAtLocation(paramSymbol, param);
479
+ type = this.checker.typeToString(paramType, param, ts.TypeFormatFlags.NoTruncation);
480
+ }
481
+ else if (param.type) {
482
+ type = param.type.getText();
483
+ }
484
+ const optional = !!param.questionToken || !!param.initializer;
485
+ let defaultValue;
486
+ if (param.initializer) {
487
+ defaultValue = param.initializer.getText();
488
+ }
489
+ const description = jsDoc.params.get(name) ?? '';
490
+ // Check for destructured object parameters with documented children
491
+ let children;
492
+ if (ts.isObjectBindingPattern(param.name)) {
493
+ children = param.name.elements.map(element => {
494
+ const childName = element.name.getText();
495
+ const childDesc = jsDoc.params.get(`${name}.${childName}`) ?? jsDoc.params.get(childName) ?? '';
496
+ const childSymbol = this.checker.getSymbolAtLocation(element.name);
497
+ let childType = 'unknown';
498
+ if (childSymbol) {
499
+ const ct = this.checker.getTypeOfSymbolAtLocation(childSymbol, element);
500
+ childType = this.checker.typeToString(ct, element, ts.TypeFormatFlags.NoTruncation);
501
+ }
502
+ return {
503
+ name: childName,
504
+ type: childType,
505
+ description: childDesc,
506
+ optional: !!element.dotDotDotToken || !!element.initializer,
507
+ defaultValue: element.initializer?.getText(),
508
+ };
509
+ });
510
+ }
511
+ return { name, type, description, optional, defaultValue, children };
512
+ });
513
+ }
514
+ extractReturn(signature, jsDoc) {
515
+ if (!signature)
516
+ return undefined;
517
+ const returnType = this.checker.getReturnTypeOfSignature(signature);
518
+ const typeStr = this.checker.typeToString(returnType, undefined, ts.TypeFormatFlags.NoTruncation);
519
+ if (typeStr === 'void' && !jsDoc.returns)
520
+ return undefined;
521
+ return {
522
+ type: typeStr,
523
+ description: jsDoc.returns ?? '',
524
+ };
525
+ }
526
+ extractThrows(jsDoc) {
527
+ return jsDoc.throws.map(text => {
528
+ // Parse "ErrorType description" or just "description"
529
+ const match = text.match(/^(\w+)\s+(.*)/);
530
+ if (match) {
531
+ return { type: match[1], description: match[2] };
532
+ }
533
+ return { type: 'Error', description: text };
534
+ });
535
+ }
536
+ isPrivateOrProtected(member) {
537
+ const flags = ts.getCombinedModifierFlags(member);
538
+ return !!(flags & (ts.ModifierFlags.Private | ts.ModifierFlags.Protected));
539
+ }
540
+ hasModifier(member, kind) {
541
+ // Use canHaveModifiers + getModifiers for TS 5.x compatibility
542
+ const node = member;
543
+ if (!ts.canHaveModifiers(node))
544
+ return false;
545
+ const modifiers = ts.getModifiers(node);
546
+ return modifiers?.some((m) => m.kind === kind) ?? false;
547
+ }
548
+ buildSourceUrl(filePath, line) {
549
+ if (!this.sourceUrl)
550
+ return undefined;
551
+ const rel = relative(this.rootDir, filePath).replace(/\\/g, '/');
552
+ return `${this.sourceUrl.replace(/\/$/, '')}/${rel}#L${line}`;
553
+ }
554
+ }
555
+ /** Find all TypeScript source files in a directory */
556
+ export function findSourceFiles(dir) {
557
+ const absDir = resolve(dir);
558
+ if (!existsSync(absDir))
559
+ return [];
560
+ const stat = statSync(absDir);
561
+ if (!stat.isDirectory()) {
562
+ return /\.tsx?$/.test(absDir) ? [absDir] : [];
563
+ }
564
+ return findTsFiles(absDir);
565
+ }
566
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/extractors/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SymbolDoc } from '../extractors/types.js';
2
+ export interface LayoutOptions {
3
+ /** Title for the nav section (default: "API Reference") */
4
+ title?: string;
5
+ }
6
+ /** Generate a _layout.md with {% nav %} for API reference navigation */
7
+ export declare function generateLayoutMarkdown(symbols: SymbolDoc[], options?: LayoutOptions): string;
8
+ //# sourceMappingURL=layout-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-generator.d.ts","sourceRoot":"","sources":["../../src/lib/layout-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,WAAW,aAAa;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wEAAwE;AACxE,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,SAAS,EAAE,EACpB,OAAO,CAAC,EAAE,aAAa,GACrB,MAAM,CAsBR"}
@@ -0,0 +1,22 @@
1
+ import { toSlug } from './symbol-generator.js';
2
+ /** Generate a _layout.md with {% nav %} for API reference navigation */
3
+ export function generateLayoutMarkdown(symbols, options) {
4
+ const title = options?.title ?? 'API Reference';
5
+ const lines = [];
6
+ lines.push('{% layout %}');
7
+ lines.push('{% region name="nav" %}');
8
+ lines.push('{% nav %}');
9
+ lines.push('');
10
+ lines.push(`## ${title}`);
11
+ lines.push('');
12
+ for (const doc of symbols) {
13
+ lines.push(`- ${toSlug(doc.name)}`);
14
+ }
15
+ lines.push('');
16
+ lines.push('{% /nav %}');
17
+ lines.push('{% /region %}');
18
+ lines.push('{% /layout %}');
19
+ lines.push('');
20
+ return lines.join('\n');
21
+ }
22
+ //# sourceMappingURL=layout-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-generator.js","sourceRoot":"","sources":["../../src/lib/layout-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAO/C,wEAAwE;AACxE,MAAM,UAAU,sBAAsB,CACrC,OAAoB,EACpB,OAAuB;IAEvB,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,eAAe,CAAC;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}