docgen-tool 3.3.1 → 3.5.0
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.
- package/dist/include/templates/main.html +2 -43
- package/dist/include/templates/pdfCover.html +2 -50
- package/dist/include/templates/pdfFooter.html +1 -14
- package/dist/include/templates/webCover.html +0 -30
- package/dist/package.json +74 -0
- package/dist/src/docgen/docgen.js +173 -0
- package/dist/src/docgen/execute/execute.js +63 -0
- package/dist/{docgen → src/docgen}/fs/fs.js +9 -9
- package/dist/src/docgen/fs/markdown.js +115 -0
- package/dist/src/docgen/fs/meta.js +113 -0
- package/dist/src/docgen/fs/templates.js +100 -0
- package/dist/src/docgen/fs/write-pages.js +113 -0
- package/dist/src/docgen/meta/derive-parameters.js +29 -0
- package/dist/src/docgen/meta/sort-pages.js +32 -0
- package/dist/src/docgen/pdf/wkhtmltopdf/wkhtmltopdf.js +186 -0
- package/dist/src/docgen/scaffold/scaffold.js +60 -0
- package/dist/src/docgen/types.js +2 -0
- package/dist/src/docgen/validation/validation.js +152 -0
- package/dist/src/docgen/views/components/copyright/copyright.js +17 -0
- package/dist/src/docgen/views/components/footer/footer.js +22 -0
- package/dist/src/docgen/views/components/pdf-footer/pdf-footer.js +30 -0
- package/dist/src/docgen/views/components/web-table-of-contents/web-table-of-contents.js +41 -0
- package/dist/src/docgen/views/html.js +11 -0
- package/dist/src/docgen/views/pages/cover/cover.js +71 -0
- package/dist/src/docgen/views/pages/cover/pdf-cover.js +24 -0
- package/dist/src/docgen/views/pages/main/main.js +59 -0
- package/dist/src/docgen/views/pages/process-pages.js +170 -0
- package/dist/src/docgen/views/redirect.js +83 -0
- package/package.json +11 -8
- package/dist/docgen/docgen.js +0 -1009
- /package/dist/{docgen.js → src/docgen.js} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Main = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var web_table_of_contents_1 = require("../../components/web-table-of-contents/web-table-of-contents");
|
|
9
|
+
var footer_1 = require("../../components/footer/footer");
|
|
10
|
+
var Logo = function (_a) {
|
|
11
|
+
var parameters = _a.parameters;
|
|
12
|
+
return ((parameters === null || parameters === void 0 ? void 0 : parameters.logoPath) && (react_1.default.createElement("img", { style: {
|
|
13
|
+
marginRight: '25px',
|
|
14
|
+
}, src: parameters === null || parameters === void 0 ? void 0 : parameters.logoPath })));
|
|
15
|
+
};
|
|
16
|
+
var Header = function (_a) {
|
|
17
|
+
var parameters = _a.parameters;
|
|
18
|
+
return (react_1.default.createElement("header", null,
|
|
19
|
+
react_1.default.createElement("div", { className: "w-fixed-width header-container" },
|
|
20
|
+
react_1.default.createElement("div", { className: "header" },
|
|
21
|
+
react_1.default.createElement("div", { className: "headerLeftBlock" },
|
|
22
|
+
react_1.default.createElement("a", { className: "dg-homelink", href: parameters.homePagePath },
|
|
23
|
+
react_1.default.createElement(Logo, { parameters: parameters })),
|
|
24
|
+
react_1.default.createElement("div", { id: "headerLeftText" },
|
|
25
|
+
react_1.default.createElement("a", { className: "dg-homelink", href: parameters.homePagePath },
|
|
26
|
+
react_1.default.createElement("span", { id: "dg-title" }, parameters.title),
|
|
27
|
+
react_1.default.createElement("span", { id: "dg-web-title-version", style: { fontWeight: 'normal' } },
|
|
28
|
+
"\u00A0(",
|
|
29
|
+
parameters.version,
|
|
30
|
+
")")),
|
|
31
|
+
react_1.default.createElement("div", { id: "headerSponsor" },
|
|
32
|
+
react_1.default.createElement("span", null, parameters.sponsorLink.name),
|
|
33
|
+
react_1.default.createElement("a", { href: parameters.sponsorLink.url },
|
|
34
|
+
react_1.default.createElement("img", { id: "sponsorLogo", src: parameters.sponsorLink.logo, alt: "sponsor logo" }))))),
|
|
35
|
+
react_1.default.createElement("div", { id: "headerRightBlock" },
|
|
36
|
+
react_1.default.createElement("span", { id: "dg-backlink" }, parameters.backlink.url && (react_1.default.createElement("a", { className: "button inverted", href: parameters.backlink.url }, parameters.backlink.name))))))));
|
|
37
|
+
};
|
|
38
|
+
var WebFooter = function (_a) {
|
|
39
|
+
var parameters = _a.parameters;
|
|
40
|
+
return (react_1.default.createElement("footer", null,
|
|
41
|
+
react_1.default.createElement("div", null,
|
|
42
|
+
react_1.default.createElement("p", { className: "w-fixed-width" },
|
|
43
|
+
react_1.default.createElement("span", { id: "dg-web-footer" }, parameters.webFooter))),
|
|
44
|
+
react_1.default.createElement("div", { className: "w-fixed-width" },
|
|
45
|
+
react_1.default.createElement(footer_1.Footer, { parameters: parameters }))));
|
|
46
|
+
};
|
|
47
|
+
var Main = function (_a) {
|
|
48
|
+
var parameters = _a.parameters, sortedPages = _a.sortedPages, pdfEnabled = _a.pdfEnabled, fixedWidth = _a.fixedWidth, children = _a.children;
|
|
49
|
+
var name = parameters.name;
|
|
50
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
51
|
+
react_1.default.createElement("div", { id: "dg-toc" },
|
|
52
|
+
react_1.default.createElement(web_table_of_contents_1.TableOfContents, { name: name, sortedPages: sortedPages, pdfEnabled: pdfEnabled })),
|
|
53
|
+
react_1.default.createElement("div", { id: "dg-navigator" }, "Table of contents"),
|
|
54
|
+
react_1.default.createElement(Header, { parameters: parameters }),
|
|
55
|
+
react_1.default.createElement("section", { id: "dg-content" }, fixedWidth ? (react_1.default.createElement("div", { className: "w-fixed-width" },
|
|
56
|
+
react_1.default.createElement("div", { id: "dg-innerContent" }, children))) : (react_1.default.createElement("div", { id: "dg-innerContent" }, children))),
|
|
57
|
+
react_1.default.createElement(WebFooter, { parameters: parameters })));
|
|
58
|
+
};
|
|
59
|
+
exports.Main = Main;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.processPages = exports.processTemplates = void 0;
|
|
43
|
+
var lodash_1 = require("lodash");
|
|
44
|
+
var react_1 = __importDefault(require("react"));
|
|
45
|
+
var picocolors_1 = __importDefault(require("picocolors"));
|
|
46
|
+
var cheerio_1 = __importDefault(require("cheerio"));
|
|
47
|
+
var main_1 = require("./main/main");
|
|
48
|
+
var cover_1 = require("./cover/cover");
|
|
49
|
+
var html_1 = require("../html");
|
|
50
|
+
var pdf_cover_1 = require("./cover/pdf-cover");
|
|
51
|
+
var pdf_footer_1 = require("../components/pdf-footer/pdf-footer");
|
|
52
|
+
var processTemplates = function (_a) {
|
|
53
|
+
var parameters = _a.parameters, mathMathjax = _a.mathMathjax, mathKatex = _a.mathKatex, rawTemplates = _a.templates;
|
|
54
|
+
//Todo: rewrite in non-mutating style (for now just clone)
|
|
55
|
+
var templates = (0, lodash_1.cloneDeep)(rawTemplates);
|
|
56
|
+
//Todo: better way of dynamically setting template <head>
|
|
57
|
+
for (var key in templates) {
|
|
58
|
+
if (templates.hasOwnProperty(key)) {
|
|
59
|
+
var $ = templates[key];
|
|
60
|
+
$('title').text(parameters.title);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (mathKatex === true) {
|
|
64
|
+
var $ = templates.main;
|
|
65
|
+
//support for KaTeX (bundled with DocGen)
|
|
66
|
+
$('head').append('<link rel="stylesheet" href="require/katex/katex.min.css" type="text/css">');
|
|
67
|
+
$('head').append('<script type="text/javascript" src="require/katex/katex.min.js"></script>');
|
|
68
|
+
$('head').append('<script type="text/javascript" src="require/katexInjector.js"></script>');
|
|
69
|
+
}
|
|
70
|
+
if (mathMathjax === true) {
|
|
71
|
+
var $ = templates.main;
|
|
72
|
+
//support for MathJax (only supported via CDN due to very large size)
|
|
73
|
+
//MathJax configuration is the same as used by math.stackexchange.com
|
|
74
|
+
//Note - wkhtmlpdf //cdn urls - see https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1634
|
|
75
|
+
//Note - later than version 2 doesn't work with wkhtmltodpf
|
|
76
|
+
$('head').append("<script type=\"text/javascript\" id=\"MathJax-script\" async\n src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML\">\n </script>");
|
|
77
|
+
}
|
|
78
|
+
return templates;
|
|
79
|
+
};
|
|
80
|
+
exports.processTemplates = processTemplates;
|
|
81
|
+
var processPages = function (_a) {
|
|
82
|
+
var templates = _a.templates, rawPages = _a.pages, sortedPages = _a.sortedPages, parameters = _a.parameters, options = _a.options, contents = _a.contents;
|
|
83
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
84
|
+
var hydratedTemplates, pages, pageTableOfContentsEnabled, tableOfContents, mainTemplate, pdfCoverTemplate, pdfFooterTemplate, webCover, pdfEnabled, webCoverHtml, $, webCoverStyles, pdfCoverHtml, $Pdf, pdfCoverStyles, pdfFooterHtml, $PdfFooter, pdfFooterStyles;
|
|
85
|
+
return __generator(this, function (_b) {
|
|
86
|
+
hydratedTemplates = (0, exports.processTemplates)({
|
|
87
|
+
parameters: parameters,
|
|
88
|
+
templates: templates,
|
|
89
|
+
mathMathjax: options.mathMathjax,
|
|
90
|
+
mathKatex: options.mathKatex,
|
|
91
|
+
});
|
|
92
|
+
pages = (0, lodash_1.cloneDeep)(rawPages);
|
|
93
|
+
pageTableOfContentsEnabled = options.pageToc;
|
|
94
|
+
tableOfContents = contents;
|
|
95
|
+
mainTemplate = hydratedTemplates.main;
|
|
96
|
+
pdfCoverTemplate = hydratedTemplates.pdfCover;
|
|
97
|
+
pdfFooterTemplate = hydratedTemplates.pdfFooter;
|
|
98
|
+
webCover = hydratedTemplates.webCover;
|
|
99
|
+
pdfEnabled = options.pdf;
|
|
100
|
+
console.log(picocolors_1.default.green('Generating the static web content'));
|
|
101
|
+
tableOfContents.forEach(function (section) {
|
|
102
|
+
section.pages.forEach(function (page) {
|
|
103
|
+
var $ = cheerio_1.default.load(mainTemplate.html()); //clone
|
|
104
|
+
var key = page.source;
|
|
105
|
+
var htmlPage = (0, html_1.toHTML)(react_1.default.createElement(main_1.Main, { parameters: parameters, sortedPages: sortedPages, pdfEnabled: pdfEnabled, fixedWidth: page.html !== true }));
|
|
106
|
+
$('body').html(htmlPage);
|
|
107
|
+
//Todo: render the Markdown directly inside the React component
|
|
108
|
+
var content = pages[key];
|
|
109
|
+
$('#dg-innerContent').html(content);
|
|
110
|
+
//------------------------------------------------------------------------------------------------------
|
|
111
|
+
//insert permalinks for every page heading
|
|
112
|
+
//when pageToc is enabled, also insert a page-level table of contents
|
|
113
|
+
var html = [], i = -1;
|
|
114
|
+
var headings = $('h1, h2, h3, h4, h5, h6');
|
|
115
|
+
if (headings.length > 0) {
|
|
116
|
+
html[++i] = '<ul class="dg-pageToc">';
|
|
117
|
+
}
|
|
118
|
+
headings.each(function () {
|
|
119
|
+
var label = $(this).text();
|
|
120
|
+
var anchor = label.toLowerCase().replace(/\s+/g, '-');
|
|
121
|
+
$(this).attr('id', anchor);
|
|
122
|
+
html[++i] = '<li><a href="#' + anchor + '">' + label + '</a></li>';
|
|
123
|
+
});
|
|
124
|
+
if (headings.length > 0) {
|
|
125
|
+
html[++i] = '</ul>';
|
|
126
|
+
}
|
|
127
|
+
if (pageTableOfContentsEnabled === true && page.html !== true) {
|
|
128
|
+
$('#dg-innerContent').prepend(html.join(''));
|
|
129
|
+
}
|
|
130
|
+
//------------------------------------------------------------------------------------------------------
|
|
131
|
+
//prepend the auto heading (which makes the PDF table of contents match the web TOC)
|
|
132
|
+
$('#dg-innerContent').prepend('<h1 id="dg-autoTitle">' + page.title + '</h1>');
|
|
133
|
+
if (page.html === true) {
|
|
134
|
+
$('#dg-autoTitle').addClass('dg-hiddenTitle');
|
|
135
|
+
}
|
|
136
|
+
//------------------------------------------------------------------------------------------------------
|
|
137
|
+
//apply the w-table class
|
|
138
|
+
$('table:not(.unstyled)').addClass('w-table w-fixed w-stripe');
|
|
139
|
+
//------------------------------------------------------------------------------------------------------
|
|
140
|
+
pages[key] = $.html();
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
webCoverHtml = (0, html_1.toHTML)(react_1.default.createElement(main_1.Main, { parameters: parameters, sortedPages: sortedPages, pdfEnabled: pdfEnabled },
|
|
144
|
+
react_1.default.createElement(cover_1.Cover, { parameters: parameters })));
|
|
145
|
+
$ = cheerio_1.default.load(mainTemplate.html());
|
|
146
|
+
webCoverStyles = cheerio_1.default.load(webCover.html());
|
|
147
|
+
$('head').append(webCoverStyles('head').html());
|
|
148
|
+
$('body').html(webCoverHtml);
|
|
149
|
+
pdfCoverHtml = (0, html_1.toHTML)(react_1.default.createElement(pdf_cover_1.PdfCover, { parameters: parameters }));
|
|
150
|
+
$Pdf = cheerio_1.default.load(pdfCoverTemplate.html());
|
|
151
|
+
pdfCoverStyles = cheerio_1.default.load(pdfCoverTemplate.html());
|
|
152
|
+
$Pdf('head').append(pdfCoverStyles('head').html());
|
|
153
|
+
$Pdf('body').html(pdfCoverHtml);
|
|
154
|
+
pdfFooterHtml = (0, html_1.toHTML)(react_1.default.createElement(pdf_footer_1.PdfFooter, { parameters: parameters }));
|
|
155
|
+
$PdfFooter = cheerio_1.default.load(pdfFooterTemplate.html());
|
|
156
|
+
pdfFooterStyles = cheerio_1.default.load(pdfFooterTemplate.html());
|
|
157
|
+
$PdfFooter('head').append(pdfFooterStyles('head').html());
|
|
158
|
+
$PdfFooter('body').html(pdfFooterHtml);
|
|
159
|
+
return [2 /*return*/, {
|
|
160
|
+
pages: pages,
|
|
161
|
+
redirect: hydratedTemplates.redirect,
|
|
162
|
+
webCover: $.html(),
|
|
163
|
+
pdfCover: $Pdf.html(),
|
|
164
|
+
pdfHeader: hydratedTemplates.pdfHeader.html(),
|
|
165
|
+
pdfFooter: $PdfFooter.html(),
|
|
166
|
+
}];
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
exports.processPages = processPages;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.createRedirect = void 0;
|
|
43
|
+
var picocolors_1 = __importDefault(require("picocolors"));
|
|
44
|
+
var path_1 = __importDefault(require("path"));
|
|
45
|
+
var fs_1 = require("../fs/fs");
|
|
46
|
+
var createRedirect = function (_a) {
|
|
47
|
+
var options = _a.options, redirectPage = _a.redirectPage, homePage = _a.homePage;
|
|
48
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
49
|
+
var parent_1, homepage, redirectLink, $, file, error_1;
|
|
50
|
+
return __generator(this, function (_b) {
|
|
51
|
+
switch (_b.label) {
|
|
52
|
+
case 0:
|
|
53
|
+
if (!options.isRedirectEnabled) return [3 /*break*/, 4];
|
|
54
|
+
parent_1 = options.output.replace(/\/$/, '');
|
|
55
|
+
parent_1 = parent_1.split(path_1.default.sep).slice(-1).pop(); //get name of final directory in the path
|
|
56
|
+
homepage = homePage;
|
|
57
|
+
homepage =
|
|
58
|
+
homepage.source.substr(0, homepage.source.lastIndexOf('.')) + '.html';
|
|
59
|
+
redirectLink = parent_1 + '/' + homepage;
|
|
60
|
+
$ = redirectPage;
|
|
61
|
+
$('a').attr('href', redirectLink);
|
|
62
|
+
$('meta[http-equiv=REFRESH]').attr('content', '0;url=' + redirectLink);
|
|
63
|
+
file = options.output + '../' + 'index.html';
|
|
64
|
+
_b.label = 1;
|
|
65
|
+
case 1:
|
|
66
|
+
_b.trys.push([1, 3, , 4]);
|
|
67
|
+
return [4 /*yield*/, (0, fs_1.writeFile)(file, $.html())];
|
|
68
|
+
case 2:
|
|
69
|
+
_b.sent();
|
|
70
|
+
return [3 /*break*/, 4];
|
|
71
|
+
case 3:
|
|
72
|
+
error_1 = _b.sent();
|
|
73
|
+
console.log(picocolors_1.default.red('Error writing redirect file: ' + file));
|
|
74
|
+
if (options.verbose === true) {
|
|
75
|
+
console.log(picocolors_1.default.red(error_1));
|
|
76
|
+
}
|
|
77
|
+
return [3 /*break*/, 4];
|
|
78
|
+
case 4: return [2 /*return*/];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
exports.createRedirect = createRedirect;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docgen-tool",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "A tool for creating HTML and PDF documentation",
|
|
5
5
|
"main": "dist/docgen.ts",
|
|
6
6
|
"bin": {
|
|
@@ -14,14 +14,15 @@
|
|
|
14
14
|
"dev": "ts-node src/docgen.ts run",
|
|
15
15
|
"build": "rimraf dist && tsc -p tsconfig.json && yarn copy:files",
|
|
16
16
|
"run:build": "dist/docgen.ts",
|
|
17
|
-
"build:docs": "ts-node src/docgen.ts run -
|
|
18
|
-
"build:docs:nopdf": "ts-node src/docgen.ts run -i src/docs -
|
|
17
|
+
"build:docs": "ts-node src/docgen.ts run -m -n -r -p -d 40000 -i src/docs -o ./docs",
|
|
18
|
+
"build:docs:nopdf": "ts-node src/docgen.ts run -m -n -r -i src/docs -o ./docs",
|
|
19
19
|
"build:styles": "sass --no-source-map src/styles/main.scss src/include/require/styles/framework.css",
|
|
20
20
|
"test": "npm run prettier:check",
|
|
21
21
|
"test:run": "rimraf src/__test__/test-run-output && ts-node src/docgen.ts run -i src/__test__/test-run -o src/__test__/test-run-output -p -m -n -d 40000",
|
|
22
|
+
"test:scaffold": "rimraf src/__test__/test-run-output && ts-node src/docgen.ts scaffold -o src/__test__/test-run-output",
|
|
22
23
|
"test:prod:run": "rimraf src/__test__/test-run-output && ./dist/docgen.js run -i src/__test__/test-run -o ../source/__test__/test-run-output -p -m -n -d 40000",
|
|
23
|
-
"prettier:check": "prettier --check 'src/docgen.ts' '*.{js,json,css,less}'",
|
|
24
|
-
"prettier:fix": "prettier --write 'src/docgen.ts' '*.{js,json,css,less}'"
|
|
24
|
+
"prettier:check": "prettier --check 'src/docgen.ts' '*.{ts,js,json,css,less}'",
|
|
25
|
+
"prettier:fix": "prettier --write 'src/docgen.ts' '*.{ts,js,json,css,less}'"
|
|
25
26
|
},
|
|
26
27
|
"husky": {
|
|
27
28
|
"hooks": {
|
|
@@ -33,21 +34,23 @@
|
|
|
33
34
|
"docgen": "prettier --write"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"chalk": "^4.1.0",
|
|
37
37
|
"cheerio": "^1.0.0-rc.12",
|
|
38
38
|
"cli-spinner": "^0.2.10",
|
|
39
39
|
"commander": "^11.0.0",
|
|
40
40
|
"fs-extra": "^11.1.1",
|
|
41
41
|
"husky": "^4.3.0",
|
|
42
|
-
"image-size": "^1.0.2",
|
|
43
42
|
"lint-staged": "^10.5.1",
|
|
43
|
+
"lodash": "^4.17.21",
|
|
44
44
|
"markdown-it": "^13.0.1",
|
|
45
|
-
"
|
|
45
|
+
"picocolors": "^1.0.0",
|
|
46
|
+
"react": "^18.2.0",
|
|
47
|
+
"react-dom": "^18.2.0",
|
|
46
48
|
"spawn-args": "^0.2.0",
|
|
47
49
|
"z-schema": "^6.0.1"
|
|
48
50
|
},
|
|
49
51
|
"devDependencies": {
|
|
50
52
|
"@types/node": "^20.3.1",
|
|
53
|
+
"@types/react": "^18.2.37",
|
|
51
54
|
"eslint": "^8.43.0",
|
|
52
55
|
"eslint-config-prettier": "^8.8.0",
|
|
53
56
|
"ncp": "^2.0.0",
|