Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export default async function typedoc(config: ITypeDocConfig) {
const packages = await getDocumentablePackages();
const srcPaths = packages.map(name => path.join(PACKAGES_FOLDER, name, "src"));
const project = compileProject(srcPaths);
const interfaces = project.getReflectionsByKind(
ReflectionKind.Interface
) as DeclarationReflection[];
const props = interfaces.filter(intf => /^I.*(?!Default)Props/.test(intf.name));
const classComponents = project.getReflectionsByKind(ReflectionKind.Class);
const functionalComponents = project
.getReflectionsByKind(ReflectionKind.Function)
.filter(({ name }) => /^[A-Z]/.test(name) && !/Wrapper$/.test(name));
const components = classComponents.concat(functionalComponents) as DeclarationReflection[];
console.log("Creating component documentation...");
const tempDir = path.join(process.cwd(), "docs");
await fs.ensureDir(tempDir);
await fs.emptyDir(tempDir);
await Promise.all(
components.map(component => {
// workaround for the ResizeObserrver
const name = component.name.replace(/Comp$/, "");
const defaultProps = component.getChildByName("defaultProps") as DeclarationReflection | null;
const documented: DocumentedComponent = {
export default async function typedoc(config: ITypeDocConfig) {
const packages = await getDocumentablePackages();
const srcPaths = packages.map(name => path.join(PACKAGES_FOLDER, name, "src"));
const project = compileProject(srcPaths);
const interfaces = project.getReflectionsByKind(
ReflectionKind.Interface
) as DeclarationReflection[];
const props = interfaces.filter(intf => /^I.*(?!Default)Props/.test(intf.name));
const classComponents = project.getReflectionsByKind(ReflectionKind.Class);
const functionalComponents = project
.getReflectionsByKind(ReflectionKind.Function)
.filter(({ name }) => /^[A-Z]/.test(name) && !/Wrapper$/.test(name));
const components = classComponents.concat(functionalComponents) as DeclarationReflection[];
console.log("Creating component documentation...");
const tempDir = path.join(process.cwd(), "docs");
await fs.ensureDir(tempDir);
await fs.emptyDir(tempDir);
await Promise.all(
components.map(component => {
// workaround for the ResizeObserrver
const name = component.name.replace(/Comp$/, "");
const defaultProps = component.getChildByName("defaultProps") as DeclarationReflection | null;
const documented: DocumentedComponent = {
name,
description: parseAndFormatComment(component.comment || {}),
const json = options.json;
delete options.json;
const version = options.version;
delete options.version;
if (!options.logger) {
// reduce console logging
options.logger = function(message, level, newline) {
if (level === 3) {
log(colors.red(message));
}
};
}
// typedoc instance
const app = new typedocModule.Application(options);
if (version && options.logger !== "none") {
log(app.toString());
}
try {
const src = app.expandInputFiles(files);
const project = app.convert(src);
if (project) {
if (out) app.generateDocs(project, out);
if (json) app.generateJson(project, json);
if (app.logger.hasErrors()) {
stream.emit("error", new PluginError(PLUGIN_NAME, "There were errors generating TypeDoc output, see above."));
stream.emit("end");
return;
}
} else {
public read(rootPath: string): Reflections {
const expandedFiles = this.typedocApp.expandInputFiles([rootPath]);
const projectReflection = this.typedocApp.convert(expandedFiles);
// console.log(JSON.stringify(this.typedocApp.serializer.projectToObject(projectReflection)));
const externalModules = this.externalModulesWithoutTestsAndMocks(projectReflection);
const classReflections = this.reflections(externalModules, ReflectionKind.Class);
const interfaceReflections = this.reflections(externalModules, ReflectionKind.Interface);
const enumReflections = this.reflections(externalModules, ReflectionKind.Enum);
return {
classReflections,
interfaceReflections,
enumReflections
};
}
}
// Global = 0, ExternalModule = 1
if (
node.kind === ReflectionKind.Global ||
node.kind === ReflectionKind.ExternalModule
) {
let children = node.children;
if (children && children.length > 0) {
children.forEach(function(child) {
findConstructs(child, files, node);
});
}
} else {
if (
(node.kind === ReflectionKind.Class ||
node.kind === ReflectionKind.Interface ||
node.kind === ReflectionKind.TypeAlias ||
node.kind === ReflectionKind.ObjectLiteral ||
node.kind === ReflectionKind.Module ||
node.kind === ReflectionKind.Variable ||
node.kind === ReflectionKind.Enum ||
node.kind === ReflectionKind.Function) &&
node.flags.isExported &&
files.find(
filePath =>
node.sources != null &&
node.sources[0].fileName.split('/').pop() ===
filePath.split('/').pop()
)
) {
if (parent && parent.kind === ReflectionKind.Module) {
// Set the node name with its parent namespace
}
// Global = 0, ExternalModule = 1
if (
node.kind === ReflectionKind.Global ||
node.kind === ReflectionKind.ExternalModule
) {
let children = node.children;
if (children && children.length > 0) {
children.forEach(function(child) {
findConstructs(child, files, node);
});
}
} else {
if (
(node.kind === ReflectionKind.Class ||
node.kind === ReflectionKind.Interface ||
node.kind === ReflectionKind.TypeAlias ||
node.kind === ReflectionKind.ObjectLiteral ||
node.kind === ReflectionKind.Module ||
node.kind === ReflectionKind.Variable ||
node.kind === ReflectionKind.Enum ||
node.kind === ReflectionKind.Function) &&
node.flags.isExported &&
files.find(
filePath =>
node.sources[0].fileName.split('/').pop() ===
filePath.split('/').pop(),
)
) {
if (parent && parent.kind === ReflectionKind.Module) {
// Set the node name with its parent namespace
node.name = parent ? parent.name + '.' + node.name : node.name;
public read(rootPath: string): Reflections {
const expandedFiles = this.typedocApp.expandInputFiles([rootPath]);
const projectReflection = this.typedocApp.convert(expandedFiles);
// console.log(JSON.stringify(this.typedocApp.serializer.projectToObject(projectReflection)));
const externalModules = this.externalModulesWithoutTestsAndMocks(projectReflection);
const classReflections = this.reflections(externalModules, ReflectionKind.Class);
const interfaceReflections = this.reflections(externalModules, ReflectionKind.Interface);
const enumReflections = this.reflections(externalModules, ReflectionKind.Enum);
return {
classReflections,
interfaceReflections,
enumReflections
};
}
if (
node.kind === ReflectionKind.Global ||
node.kind === ReflectionKind.ExternalModule
) {
let children = node.children;
if (children && children.length > 0) {
children.forEach(function(child) {
findConstructs(child, files, node);
});
}
} else {
if (
(node.kind === ReflectionKind.Class ||
node.kind === ReflectionKind.Interface ||
node.kind === ReflectionKind.TypeAlias ||
node.kind === ReflectionKind.ObjectLiteral ||
node.kind === ReflectionKind.Module ||
node.kind === ReflectionKind.Variable ||
node.kind === ReflectionKind.Enum ||
node.kind === ReflectionKind.Function) &&
node.flags.isExported &&
files.find(
filePath =>
node.sources[0].fileName.split('/').pop() ===
filePath.split('/').pop(),
)
) {
if (parent && parent.kind === ReflectionKind.Module) {
// Set the node name with its parent namespace
node.name = parent ? parent.name + '.' + node.name : node.name;
}
exportedConstructs.push(node);
if (
node.kind === ReflectionKind.Global ||
node.kind === ReflectionKind.ExternalModule
) {
let children = node.children;
if (children && children.length > 0) {
children.forEach(function(child) {
findConstructs(child, files, node);
});
}
} else {
if (
(node.kind === ReflectionKind.Class ||
node.kind === ReflectionKind.Interface ||
node.kind === ReflectionKind.TypeAlias ||
node.kind === ReflectionKind.ObjectLiteral ||
node.kind === ReflectionKind.Module ||
node.kind === ReflectionKind.Variable ||
node.kind === ReflectionKind.Enum ||
node.kind === ReflectionKind.Function) &&
node.flags.isExported &&
files.find(
filePath =>
node.sources != null &&
node.sources[0].fileName.split('/').pop() ===
filePath.split('/').pop()
)
) {
if (parent && parent.kind === ReflectionKind.Module) {
// Set the node name with its parent namespace
node.name = parent ? parent.name + '.' + node.name : node.name;
}
) {
let children = node.children;
if (children && children.length > 0) {
children.forEach(function(child) {
findConstructs(child, files, node);
});
}
} else {
if (
(node.kind === ReflectionKind.Class ||
node.kind === ReflectionKind.Interface ||
node.kind === ReflectionKind.TypeAlias ||
node.kind === ReflectionKind.ObjectLiteral ||
node.kind === ReflectionKind.Module ||
node.kind === ReflectionKind.Variable ||
node.kind === ReflectionKind.Enum ||
node.kind === ReflectionKind.Function) &&
node.flags.isExported &&
files.find(
filePath =>
node.sources[0].fileName.split('/').pop() ===
filePath.split('/').pop(),
)
) {
if (parent && parent.kind === ReflectionKind.Module) {
// Set the node name with its parent namespace
node.name = parent ? parent.name + '.' + node.name : node.name;
}
exportedConstructs.push(node);
}
}
}