@refrakt-md/docs 0.8.5 → 0.9.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 (66) hide show
  1. package/dist/cli-plugin.d.ts +12 -0
  2. package/dist/cli-plugin.d.ts.map +1 -0
  3. package/dist/cli-plugin.js +113 -0
  4. package/dist/cli-plugin.js.map +1 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +13 -9
  7. package/dist/config.js.map +1 -1
  8. package/dist/extract/command.d.ts +10 -0
  9. package/dist/extract/command.d.ts.map +1 -0
  10. package/dist/extract/command.js +161 -0
  11. package/dist/extract/command.js.map +1 -0
  12. package/dist/extract/extractors.d.ts +3 -0
  13. package/dist/extract/extractors.d.ts.map +1 -0
  14. package/dist/extract/extractors.js +17 -0
  15. package/dist/extract/extractors.js.map +1 -0
  16. package/dist/extract/layout-generator.d.ts +8 -0
  17. package/dist/extract/layout-generator.d.ts.map +1 -0
  18. package/dist/extract/layout-generator.js +22 -0
  19. package/dist/extract/layout-generator.js.map +1 -0
  20. package/dist/extract/python-docstring.d.ts +26 -0
  21. package/dist/extract/python-docstring.d.ts.map +1 -0
  22. package/dist/extract/python-docstring.js +396 -0
  23. package/dist/extract/python-docstring.js.map +1 -0
  24. package/dist/extract/python.d.ts +21 -0
  25. package/dist/extract/python.d.ts.map +1 -0
  26. package/dist/extract/python.js +557 -0
  27. package/dist/extract/python.js.map +1 -0
  28. package/dist/extract/symbol-generator.d.ts +14 -0
  29. package/dist/extract/symbol-generator.d.ts.map +1 -0
  30. package/dist/extract/symbol-generator.js +201 -0
  31. package/dist/extract/symbol-generator.js.map +1 -0
  32. package/dist/extract/types.d.ts +55 -0
  33. package/dist/extract/types.d.ts.map +1 -0
  34. package/dist/extract/types.js +2 -0
  35. package/dist/extract/types.js.map +1 -0
  36. package/dist/extract/typescript.d.ts +28 -0
  37. package/dist/extract/typescript.d.ts.map +1 -0
  38. package/dist/extract/typescript.js +562 -0
  39. package/dist/extract/typescript.js.map +1 -0
  40. package/dist/index.js +1 -1
  41. package/dist/tags/api.d.ts.map +1 -1
  42. package/dist/tags/api.js +1 -2
  43. package/dist/tags/api.js.map +1 -1
  44. package/dist/tags/changelog.d.ts.map +1 -1
  45. package/dist/tags/changelog.js +20 -34
  46. package/dist/tags/changelog.js.map +1 -1
  47. package/dist/tags/symbol.d.ts.map +1 -1
  48. package/dist/tags/symbol.js +3 -4
  49. package/dist/tags/symbol.js.map +1 -1
  50. package/package.json +18 -5
  51. package/dist/schema/api.d.ts +0 -6
  52. package/dist/schema/api.d.ts.map +0 -1
  53. package/dist/schema/api.js +0 -8
  54. package/dist/schema/api.js.map +0 -1
  55. package/dist/schema/changelog.d.ts +0 -10
  56. package/dist/schema/changelog.d.ts.map +0 -1
  57. package/dist/schema/changelog.js +0 -15
  58. package/dist/schema/changelog.js.map +0 -1
  59. package/dist/schema/symbol.d.ts +0 -14
  60. package/dist/schema/symbol.d.ts.map +0 -1
  61. package/dist/schema/symbol.js +0 -20
  62. package/dist/schema/symbol.js.map +0 -1
  63. package/dist/types.d.ts +0 -12
  64. package/dist/types.d.ts.map +0 -1
  65. package/dist/types.js +0 -13
  66. package/dist/types.js.map +0 -1
@@ -0,0 +1,557 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { resolve, relative } from 'node:path';
3
+ import { createRequire } from 'node:module';
4
+ import { parseDocstring } from './python-docstring.js';
5
+ // ── Enum / interface base classes ────────────────────────────────────
6
+ const ENUM_BASES = new Set(['Enum', 'IntEnum', 'StrEnum', 'Flag', 'IntFlag']);
7
+ const INTERFACE_BASES = new Set(['Protocol', 'ABC', 'ABCMeta']);
8
+ // ── Helpers ──────────────────────────────────────────────────────────
9
+ function getDocstring(node) {
10
+ // The docstring is the first expression_statement > string in the body
11
+ const body = node.childForFieldName('body');
12
+ if (!body)
13
+ return '';
14
+ for (const child of body.children) {
15
+ if (child.type === 'expression_statement') {
16
+ const strNode = child.children[0];
17
+ if (strNode && strNode.type === 'string') {
18
+ return stripQuotes(strNode.text);
19
+ }
20
+ // concatenated_string is also possible but rare
21
+ if (strNode && strNode.type === 'concatenated_string') {
22
+ return strNode.children
23
+ .filter(c => c.type === 'string')
24
+ .map(c => stripQuotes(c.text))
25
+ .join('');
26
+ }
27
+ break; // first statement isn't a docstring
28
+ }
29
+ // Skip comments, pass statements
30
+ if (child.type === 'comment' || child.type === 'pass_statement')
31
+ continue;
32
+ break;
33
+ }
34
+ return '';
35
+ }
36
+ function stripQuotes(raw) {
37
+ // Triple-quoted strings
38
+ for (const q of ['"""', "'''"]) {
39
+ for (const prefix of ['', 'r', 'u', 'b', 'f', 'rb', 'br', 'fr', 'rf']) {
40
+ const start = prefix + q;
41
+ if (raw.startsWith(start) && raw.endsWith(q)) {
42
+ return raw.slice(start.length, -q.length);
43
+ }
44
+ }
45
+ }
46
+ // Single-quoted
47
+ for (const q of ['"', "'"]) {
48
+ for (const prefix of ['', 'r', 'u', 'b', 'f', 'rb', 'br', 'fr', 'rf']) {
49
+ const start = prefix + q;
50
+ if (raw.startsWith(start) && raw.endsWith(q)) {
51
+ return raw.slice(start.length, -q.length);
52
+ }
53
+ }
54
+ }
55
+ return raw;
56
+ }
57
+ function getDecorators(node) {
58
+ // Decorators appear as siblings before the function/class in a decorated_definition
59
+ const parent = node.parent;
60
+ if (!parent || parent.type !== 'decorated_definition')
61
+ return [];
62
+ const decorators = [];
63
+ for (const child of parent.children) {
64
+ if (child.type === 'decorator') {
65
+ // Decorator text includes the @
66
+ decorators.push(child.text.trim());
67
+ }
68
+ }
69
+ return decorators;
70
+ }
71
+ function hasDecorator(node, name) {
72
+ return getDecorators(node).some(d => d === `@${name}` || d.startsWith(`@${name}(`));
73
+ }
74
+ function getBaseClasses(node) {
75
+ const argList = node.childForFieldName('superclasses');
76
+ if (!argList)
77
+ return [];
78
+ const bases = [];
79
+ for (const child of argList.namedChildren) {
80
+ if (child.type === 'identifier' || child.type === 'attribute') {
81
+ bases.push(child.text);
82
+ }
83
+ }
84
+ return bases;
85
+ }
86
+ function classifyClass(node) {
87
+ const bases = getBaseClasses(node);
88
+ // Check direct base names (last segment of dotted names)
89
+ for (const base of bases) {
90
+ const name = base.includes('.') ? base.split('.').pop() : base;
91
+ if (ENUM_BASES.has(name))
92
+ return 'enum';
93
+ if (INTERFACE_BASES.has(name))
94
+ return 'interface';
95
+ }
96
+ return 'class';
97
+ }
98
+ // ── Parameter extraction ─────────────────────────────────────────────
99
+ function extractParams(paramsNode, skipSelfCls) {
100
+ if (!paramsNode)
101
+ return [];
102
+ const params = [];
103
+ for (const child of paramsNode.namedChildren) {
104
+ const param = extractSingleParam(child, skipSelfCls);
105
+ if (param)
106
+ params.push(param);
107
+ }
108
+ return params;
109
+ }
110
+ function extractSingleParam(node, skipSelfCls) {
111
+ switch (node.type) {
112
+ case 'identifier': {
113
+ const name = node.text;
114
+ if (skipSelfCls && (name === 'self' || name === 'cls'))
115
+ return null;
116
+ return { name, type: 'Any', description: '', optional: false };
117
+ }
118
+ case 'typed_parameter': {
119
+ const nameNode = node.children.find(c => c.type === 'identifier' || c.type === 'list_splat_pattern' || c.type === 'dictionary_splat_pattern');
120
+ const typeNode = node.childForFieldName('type');
121
+ if (!nameNode)
122
+ return null;
123
+ let name = nameNode.text;
124
+ let prefix = '';
125
+ if (nameNode.type === 'list_splat_pattern') {
126
+ prefix = '*';
127
+ name = nameNode.children.find(c => c.type === 'identifier')?.text ?? name;
128
+ }
129
+ else if (nameNode.type === 'dictionary_splat_pattern') {
130
+ prefix = '**';
131
+ name = nameNode.children.find(c => c.type === 'identifier')?.text ?? name;
132
+ }
133
+ if (skipSelfCls && !prefix && (name === 'self' || name === 'cls'))
134
+ return null;
135
+ return {
136
+ name: prefix + name,
137
+ type: typeNode?.text ?? 'Any',
138
+ description: '',
139
+ optional: false,
140
+ };
141
+ }
142
+ case 'default_parameter': {
143
+ const nameNode = node.childForFieldName('name');
144
+ const valueNode = node.childForFieldName('value');
145
+ if (!nameNode)
146
+ return null;
147
+ const name = nameNode.text;
148
+ if (skipSelfCls && (name === 'self' || name === 'cls'))
149
+ return null;
150
+ return {
151
+ name,
152
+ type: 'Any',
153
+ description: '',
154
+ optional: true,
155
+ defaultValue: valueNode?.text,
156
+ };
157
+ }
158
+ case 'typed_default_parameter': {
159
+ const nameNode = node.childForFieldName('name');
160
+ const typeNode = node.childForFieldName('type');
161
+ const valueNode = node.childForFieldName('value');
162
+ if (!nameNode)
163
+ return null;
164
+ const name = nameNode.text;
165
+ if (skipSelfCls && (name === 'self' || name === 'cls'))
166
+ return null;
167
+ return {
168
+ name,
169
+ type: typeNode?.text ?? 'Any',
170
+ description: '',
171
+ optional: true,
172
+ defaultValue: valueNode?.text,
173
+ };
174
+ }
175
+ case 'list_splat_pattern': {
176
+ const inner = node.children.find(c => c.type === 'identifier');
177
+ const name = inner?.text ?? node.text.replace(/^\*/, '');
178
+ return { name: `*${name}`, type: 'Any', description: '', optional: true };
179
+ }
180
+ case 'dictionary_splat_pattern': {
181
+ const inner = node.children.find(c => c.type === 'identifier');
182
+ const name = inner?.text ?? node.text.replace(/^\*\*/, '');
183
+ return { name: `**${name}`, type: 'Any', description: '', optional: true };
184
+ }
185
+ case 'tuple_pattern': {
186
+ // Tuple unpacking in params — rare, skip
187
+ return null;
188
+ }
189
+ default:
190
+ return null;
191
+ }
192
+ }
193
+ // ── Signature reconstruction ─────────────────────────────────────────
194
+ function buildFunctionSignature(node, decorators) {
195
+ const lines = [];
196
+ for (const dec of decorators) {
197
+ lines.push(dec);
198
+ }
199
+ const name = node.childForFieldName('name')?.text ?? '?';
200
+ const paramsNode = node.childForFieldName('parameters');
201
+ const returnType = node.childForFieldName('return_type');
202
+ let sig = `def ${name}(`;
203
+ if (paramsNode) {
204
+ // Reconstruct params text, but simplified
205
+ const paramTexts = [];
206
+ for (const child of paramsNode.namedChildren) {
207
+ paramTexts.push(child.text);
208
+ }
209
+ sig += paramTexts.join(', ');
210
+ }
211
+ sig += ')';
212
+ if (returnType) {
213
+ sig += ` -> ${returnType.text}`;
214
+ }
215
+ sig += ':';
216
+ lines.push(sig);
217
+ return lines.join('\n');
218
+ }
219
+ function buildClassSignature(node, decorators) {
220
+ const lines = [];
221
+ for (const dec of decorators) {
222
+ lines.push(dec);
223
+ }
224
+ const name = node.childForFieldName('name')?.text ?? '?';
225
+ const bases = getBaseClasses(node);
226
+ let sig = `class ${name}`;
227
+ if (bases.length > 0) {
228
+ sig += `(${bases.join(', ')})`;
229
+ }
230
+ sig += ':';
231
+ lines.push(sig);
232
+ return lines.join('\n');
233
+ }
234
+ // ── Main extractor ───────────────────────────────────────────────────
235
+ export class PythonExtractor {
236
+ constructor(rootDir, sourceUrl) {
237
+ this.initialized = false;
238
+ this.rootDir = resolve(rootDir);
239
+ this.sourceUrl = sourceUrl;
240
+ }
241
+ async init() {
242
+ if (this.initialized)
243
+ return;
244
+ const require = createRequire(import.meta.url);
245
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
+ const Parser = (await import('web-tree-sitter')).default;
247
+ await Parser.init();
248
+ const wasmPath = require.resolve('tree-sitter-wasms/out/tree-sitter-python.wasm');
249
+ const Python = await Parser.Language.load(wasmPath);
250
+ this.parser = new Parser();
251
+ this.parser.setLanguage(Python);
252
+ this.initialized = true;
253
+ }
254
+ extractFile(filePath) {
255
+ if (!this.initialized) {
256
+ throw new Error('PythonExtractor.init() must be called before extractFile()');
257
+ }
258
+ const absPath = resolve(filePath);
259
+ const source = readFileSync(absPath, 'utf-8');
260
+ const tree = this.parser.parse(source);
261
+ if (!tree)
262
+ return { symbols: [], filePath: absPath };
263
+ const root = tree.rootNode;
264
+ // Determine exports
265
+ const allExports = this.extractAllList(root);
266
+ const symbols = [];
267
+ // Walk top-level statements
268
+ for (const child of root.children) {
269
+ const node = child.type === 'decorated_definition'
270
+ ? child.namedChildren.find(c => c.type === 'function_definition' || c.type === 'class_definition')
271
+ : child;
272
+ if (!node)
273
+ continue;
274
+ if (node.type === 'function_definition') {
275
+ const name = node.childForFieldName('name')?.text;
276
+ if (!name)
277
+ continue;
278
+ if (!this.isExported(name, allExports))
279
+ continue;
280
+ symbols.push(this.extractFunction(node, absPath));
281
+ }
282
+ else if (node.type === 'class_definition') {
283
+ const name = node.childForFieldName('name')?.text;
284
+ if (!name)
285
+ continue;
286
+ if (!this.isExported(name, allExports))
287
+ continue;
288
+ symbols.push(this.extractClass(node, absPath));
289
+ }
290
+ }
291
+ return { symbols, filePath: absPath };
292
+ }
293
+ // ── Export resolution ────────────────────────────────────────
294
+ extractAllList(root) {
295
+ for (const child of root.children) {
296
+ if (child.type !== 'expression_statement')
297
+ continue;
298
+ const expr = child.children[0];
299
+ if (!expr || expr.type !== 'assignment')
300
+ continue;
301
+ const left = expr.childForFieldName('left');
302
+ if (!left || left.type !== 'identifier' || left.text !== '__all__')
303
+ continue;
304
+ const right = expr.childForFieldName('right');
305
+ if (!right || right.type !== 'list')
306
+ continue;
307
+ const names = new Set();
308
+ for (const elem of right.namedChildren) {
309
+ if (elem.type === 'string') {
310
+ names.add(stripQuotes(elem.text));
311
+ }
312
+ }
313
+ return names;
314
+ }
315
+ return null;
316
+ }
317
+ isExported(name, allExports) {
318
+ if (allExports)
319
+ return allExports.has(name);
320
+ return !name.startsWith('_');
321
+ }
322
+ // ── Function extraction ─────────────────────────────────────
323
+ extractFunction(node, filePath) {
324
+ const name = node.childForFieldName('name').text;
325
+ const decorators = getDecorators(node);
326
+ const rawDocstring = getDocstring(node);
327
+ const docInfo = rawDocstring ? parseDocstring(rawDocstring) : null;
328
+ const paramsNode = node.childForFieldName('parameters');
329
+ let parameters = paramsNode ? extractParams(paramsNode, false) : [];
330
+ // Enrich params from docstring
331
+ if (docInfo) {
332
+ parameters = this.mergeParamDocs(parameters, docInfo.params);
333
+ }
334
+ const signature = buildFunctionSignature(node, decorators);
335
+ let returns;
336
+ const returnType = node.childForFieldName('return_type');
337
+ if (docInfo?.returns) {
338
+ returns = {
339
+ type: returnType?.text ?? docInfo.returns.type,
340
+ description: docInfo.returns.description,
341
+ };
342
+ }
343
+ else if (returnType) {
344
+ returns = { type: returnType.text, description: '' };
345
+ }
346
+ let throws;
347
+ if (docInfo?.raises && docInfo.raises.length > 0) {
348
+ throws = docInfo.raises;
349
+ }
350
+ const line = node.startPosition.row + 1;
351
+ return {
352
+ name,
353
+ kind: 'function',
354
+ signature,
355
+ description: docInfo?.description ?? '',
356
+ parameters: parameters.length > 0 ? parameters : undefined,
357
+ returns: returns?.type === 'None' && !returns.description ? undefined : returns,
358
+ throws,
359
+ since: docInfo?.since,
360
+ deprecated: docInfo?.deprecated,
361
+ source: this.buildSourceUrl(filePath, line),
362
+ filePath,
363
+ line,
364
+ };
365
+ }
366
+ // ── Class extraction ────────────────────────────────────────
367
+ extractClass(node, filePath) {
368
+ const name = node.childForFieldName('name').text;
369
+ const decorators = getDecorators(node);
370
+ const rawDocstring = getDocstring(node);
371
+ const docInfo = rawDocstring ? parseDocstring(rawDocstring) : null;
372
+ const kind = classifyClass(node);
373
+ const signature = buildClassSignature(node, decorators);
374
+ const line = node.startPosition.row + 1;
375
+ // For enum classes, extract members as parameters
376
+ if (kind === 'enum') {
377
+ const parameters = this.extractEnumMembers(node);
378
+ return {
379
+ name, kind, signature,
380
+ description: docInfo?.description ?? '',
381
+ parameters: parameters.length > 0 ? parameters : undefined,
382
+ since: docInfo?.since,
383
+ deprecated: docInfo?.deprecated,
384
+ source: this.buildSourceUrl(filePath, line),
385
+ filePath, line,
386
+ };
387
+ }
388
+ const groups = this.extractClassMembers(node, filePath);
389
+ return {
390
+ name, kind, signature,
391
+ description: docInfo?.description ?? '',
392
+ groups: groups.length > 0 ? groups : undefined,
393
+ since: docInfo?.since,
394
+ deprecated: docInfo?.deprecated,
395
+ source: this.buildSourceUrl(filePath, line),
396
+ filePath, line,
397
+ };
398
+ }
399
+ extractEnumMembers(classNode) {
400
+ const body = classNode.childForFieldName('body');
401
+ if (!body)
402
+ return [];
403
+ const members = [];
404
+ for (const child of body.children) {
405
+ if (child.type !== 'expression_statement')
406
+ continue;
407
+ const expr = child.children[0];
408
+ if (!expr || expr.type !== 'assignment')
409
+ continue;
410
+ const left = expr.childForFieldName('left');
411
+ const right = expr.childForFieldName('right');
412
+ if (!left || left.type !== 'identifier')
413
+ continue;
414
+ const name = left.text;
415
+ if (name.startsWith('_'))
416
+ continue;
417
+ members.push({
418
+ name,
419
+ type: right?.text ?? '',
420
+ description: '',
421
+ optional: false,
422
+ });
423
+ }
424
+ return members;
425
+ }
426
+ extractClassMembers(classNode, filePath) {
427
+ const body = classNode.childForFieldName('body');
428
+ if (!body)
429
+ return [];
430
+ const constructors = [];
431
+ const properties = [];
432
+ const methods = [];
433
+ const staticMethods = [];
434
+ const classMethods = [];
435
+ for (const child of body.children) {
436
+ const funcNode = child.type === 'decorated_definition'
437
+ ? child.namedChildren.find(c => c.type === 'function_definition')
438
+ : child.type === 'function_definition' ? child : null;
439
+ if (!funcNode)
440
+ continue;
441
+ const name = funcNode.childForFieldName('name')?.text;
442
+ if (!name)
443
+ continue;
444
+ // Skip private methods (except __init__)
445
+ if (name !== '__init__' && name.startsWith('_'))
446
+ continue;
447
+ if (name === '__init__') {
448
+ constructors.push(this.extractMethodMember(funcNode, 'constructor'));
449
+ }
450
+ else if (hasDecorator(funcNode, 'property')) {
451
+ properties.push(this.extractPropertyMember(funcNode));
452
+ }
453
+ else if (hasDecorator(funcNode, 'staticmethod')) {
454
+ staticMethods.push(this.extractMethodMember(funcNode, 'method'));
455
+ }
456
+ else if (hasDecorator(funcNode, 'classmethod')) {
457
+ classMethods.push(this.extractMethodMember(funcNode, 'method'));
458
+ }
459
+ else {
460
+ methods.push(this.extractMethodMember(funcNode, 'method'));
461
+ }
462
+ }
463
+ const groups = [];
464
+ if (constructors.length > 0)
465
+ groups.push({ label: 'Constructor', members: constructors });
466
+ if (properties.length > 0)
467
+ groups.push({ label: 'Properties', members: properties });
468
+ if (methods.length > 0)
469
+ groups.push({ label: 'Methods', members: methods });
470
+ if (staticMethods.length > 0)
471
+ groups.push({ label: 'Static Methods', members: staticMethods });
472
+ if (classMethods.length > 0)
473
+ groups.push({ label: 'Class Methods', members: classMethods });
474
+ return groups;
475
+ }
476
+ extractMethodMember(node, kind) {
477
+ const name = node.childForFieldName('name').text;
478
+ const decorators = getDecorators(node);
479
+ const rawDocstring = getDocstring(node);
480
+ const docInfo = rawDocstring ? parseDocstring(rawDocstring) : null;
481
+ const isConstructor = name === '__init__';
482
+ const isStatic = hasDecorator(node, 'staticmethod');
483
+ const skipSelfCls = !isStatic; // skip self/cls unless it's a static method
484
+ const paramsNode = node.childForFieldName('parameters');
485
+ let parameters = paramsNode ? extractParams(paramsNode, skipSelfCls) : [];
486
+ if (docInfo) {
487
+ parameters = this.mergeParamDocs(parameters, docInfo.params);
488
+ }
489
+ const signature = buildFunctionSignature(node, decorators);
490
+ let returns;
491
+ const returnType = node.childForFieldName('return_type');
492
+ if (!isConstructor) {
493
+ if (docInfo?.returns) {
494
+ returns = {
495
+ type: returnType?.text ?? docInfo.returns.type,
496
+ description: docInfo.returns.description,
497
+ };
498
+ }
499
+ else if (returnType && returnType.text !== 'None') {
500
+ returns = { type: returnType.text, description: '' };
501
+ }
502
+ }
503
+ let throws;
504
+ if (docInfo?.raises && docInfo.raises.length > 0) {
505
+ throws = docInfo.raises;
506
+ }
507
+ return {
508
+ name: isConstructor ? 'constructor' : name,
509
+ kind,
510
+ signature,
511
+ description: docInfo?.description ?? '',
512
+ parameters: parameters.length > 0 ? parameters : undefined,
513
+ returns,
514
+ throws,
515
+ since: docInfo?.since,
516
+ deprecated: docInfo?.deprecated,
517
+ };
518
+ }
519
+ extractPropertyMember(node) {
520
+ const name = node.childForFieldName('name').text;
521
+ const rawDocstring = getDocstring(node);
522
+ const docInfo = rawDocstring ? parseDocstring(rawDocstring) : null;
523
+ const returnType = node.childForFieldName('return_type');
524
+ const typeStr = returnType?.text ?? 'Any';
525
+ const signature = `${name}: ${typeStr}`;
526
+ return {
527
+ name,
528
+ kind: 'property',
529
+ signature,
530
+ description: docInfo?.description ?? '',
531
+ since: docInfo?.since,
532
+ deprecated: docInfo?.deprecated,
533
+ };
534
+ }
535
+ // ── Docstring merging ───────────────────────────────────────
536
+ mergeParamDocs(params, docParams) {
537
+ return params.map(p => {
538
+ const cleanName = p.name.replace(/^\*{1,2}/, '');
539
+ const docParam = docParams.get(cleanName);
540
+ if (!docParam)
541
+ return p;
542
+ return {
543
+ ...p,
544
+ type: p.type === 'Any' && docParam.type !== 'Any' ? docParam.type : p.type,
545
+ description: docParam.description || p.description,
546
+ };
547
+ });
548
+ }
549
+ // ── Source URL ───────────────────────────────────────────────
550
+ buildSourceUrl(filePath, line) {
551
+ if (!this.sourceUrl)
552
+ return undefined;
553
+ const rel = relative(this.rootDir, filePath).replace(/\\/g, '/');
554
+ return `${this.sourceUrl.replace(/\/$/, '')}/${rel}#L${line}`;
555
+ }
556
+ }
557
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/extract/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { SymbolDoc } from './types.js';
2
+ export interface GeneratorOptions {
3
+ /** Whether to include frontmatter (default: true) */
4
+ frontmatter?: boolean;
5
+ /** Language for code fences and symbol tag (default: 'typescript') */
6
+ lang?: string;
7
+ }
8
+ /** Convert camelCase/PascalCase to kebab-case for file slugs */
9
+ export declare function toSlug(name: string): string;
10
+ /** Generate a single {% symbol %} Markdown block for one SymbolDoc */
11
+ export declare function generateSymbolMarkdown(doc: SymbolDoc, options?: GeneratorOptions): string;
12
+ /** Generate a single file containing multiple symbols from the same source file */
13
+ export declare function generateMultiSymbolMarkdown(docs: SymbolDoc[], fileName: string): string;
14
+ //# sourceMappingURL=symbol-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-generator.d.ts","sourceRoot":"","sources":["../../src/extract/symbol-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,YAAY,CAAC;AAE1F,MAAM,WAAW,gBAAgB;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAQD,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3C;AAoED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAmIzF;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcvF"}