mirror of https://github.com/mifi/lossless-cut
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
811 B
TypeScript
30 lines
811 B
TypeScript
import { Project } from 'ts-morph';
|
|
import fs from 'node:fs';
|
|
|
|
const project = new Project({
|
|
tsConfigFilePath: 'tsconfig.common.json',
|
|
});
|
|
|
|
const memoryProject = new Project({ useInMemoryFileSystem: true });
|
|
const memoryFile = memoryProject.createSourceFile('');
|
|
|
|
const sourceFile = project.getSourceFileOrThrow('src/common/userTypes.ts');
|
|
|
|
let md = '# Public types\n\n';
|
|
|
|
// transfer interfaces to a temporary in-memory file
|
|
sourceFile.getInterfaces().forEach((iface) => {
|
|
const struct = iface.getStructure();
|
|
struct.isExported = false; // remove `export`
|
|
memoryFile.addInterface(struct);
|
|
});
|
|
|
|
memoryFile.getInterfaces().forEach((iface) => {
|
|
md += `## ${iface.getName()}\n\n`;
|
|
md += '```ts\n';
|
|
md += iface.getText(true);
|
|
md += '\n```\n\n';
|
|
});
|
|
|
|
fs.writeFileSync('docs/generated/types.md', md);
|