@bitjson/typedoc
Version:
Create api documentation for TypeScript projects.
85 lines • 3.54 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
const Path = require("path");
const FS = require("fs");
const components_1 = require("../components");
const converter_1 = require("../converter");
const component_1 = require("../../utils/component");
let PackagePlugin = class PackagePlugin extends components_1.ConverterComponent {
initialize() {
this.listenTo(this.owner, {
[converter_1.Converter.EVENT_BEGIN]: this.onBegin,
[converter_1.Converter.EVENT_FILE_BEGIN]: this.onBeginDocument,
[converter_1.Converter.EVENT_RESOLVE_BEGIN]: this.onBeginResolve
});
}
onBegin(context) {
this.readmeFile = undefined;
this.packageFile = undefined;
this.visited = [];
let readme = this.readme;
this.noReadmeFile = (readme === 'none');
if (!this.noReadmeFile && readme) {
readme = Path.resolve(readme);
if (FS.existsSync(readme)) {
this.readmeFile = readme;
}
}
}
onBeginDocument(context, reflection, node) {
if (!node) {
return;
}
if (this.readmeFile && this.packageFile) {
return;
}
const fileName = node.fileName;
let dirName, parentDir = Path.resolve(Path.dirname(fileName));
do {
dirName = parentDir;
if (this.visited.includes(dirName)) {
break;
}
FS.readdirSync(dirName).forEach((file) => {
const lfile = file.toLowerCase();
if (!this.noReadmeFile && !this.readmeFile && lfile === 'readme.md') {
this.readmeFile = Path.join(dirName, file);
}
if (!this.packageFile && lfile === 'package.json') {
this.packageFile = Path.join(dirName, file);
}
});
this.visited.push(dirName);
parentDir = Path.resolve(Path.join(dirName, '..'));
} while (dirName !== parentDir);
}
onBeginResolve(context) {
const project = context.project;
if (this.readmeFile) {
project.readme = FS.readFileSync(this.readmeFile, 'utf-8');
}
if (this.packageFile) {
project.packageInfo = JSON.parse(FS.readFileSync(this.packageFile, 'utf-8'));
if (!project.name) {
project.name = project.packageInfo.name;
}
}
}
};
__decorate([
component_1.Option({
name: 'readme',
help: 'Path to the readme file that should be displayed on the index page. Pass `none` to disable the index page and start the documentation on the globals page.'
})
], PackagePlugin.prototype, "readme", void 0);
PackagePlugin = __decorate([
components_1.Component({ name: 'package' })
], PackagePlugin);
exports.PackagePlugin = PackagePlugin;
//# sourceMappingURL=PackagePlugin.js.map