vuepress-jsdoc 4.2.0 → 4.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
+ ## 4.3.0 (2022-02-15)
2
+
3
+ * feat(include): add include flag, fix some bugs and improve performance ([082a60a](https://github.com/ph1p/vuepress-jsdoc/commit/082a60a))
4
+
5
+
6
+
1
7
  ## 4.2.0 (2021-11-17)
2
8
 
9
+ * 4.2.0 ([3cdbc8a](https://github.com/ph1p/vuepress-jsdoc/commit/3cdbc8a))
3
10
  * build(deps): update dependencies ([858dff8](https://github.com/ph1p/vuepress-jsdoc/commit/858dff8))
4
11
 
5
12
 
package/README.md CHANGED
@@ -66,6 +66,7 @@ Use these options after `vuepress-jsdoc`.
66
66
  | --version | -v | | Show current version |
67
67
  | --readme | -r | | Path to custom readme file |
68
68
  | --exclude | -e | | Pattern to exclude files/folders (Comma seperated) - \*.test.js,exclude.js [more information](https://github.com/micromatch/micromatch#ismatch) |
69
+ | --include | -e | | Pattern to include files/folders (Comma seperated) - \*.test.js,exclude.js [more information](https://github.com/micromatch/micromatch#ismatch) |
69
70
  | --rmPattern | -rm | | Pattern when removing files. You can ex- and include files. (glob pattern) |
70
71
  | --partials | -p | | jsdoc2markdown partial templates (overwrites default ones) |
71
72
  | --jsDocConfigPath | -c | | Path to [JsDoc Config](http://usejsdoc.org/about-configuring-jsdoc.html) (experimental) |
@@ -162,7 +163,7 @@ Use `headline` to add a custom `h1` title.
162
163
  To use typescript, you have to install these dev-dependencies:
163
164
 
164
165
  ```bash
165
- yarn add -D typescript jsdoc-babel @babel/cli @babel/core @babel/preset-env @babel/preset-typescript jsdoc-to-markdown
166
+ npm install -D typescript jsdoc-babel @babel/cli @babel/core @babel/preset-env @babel/preset-typescript jsdoc-to-markdown
166
167
  ```
167
168
 
168
169
  Next, you have to add a `jsdoc.json` to your project with some settings and add it with the `-c` parameter.
package/dist/cmds.js CHANGED
@@ -23,6 +23,7 @@ exports.default = (function (version) {
23
23
  .option('-f, --folder <string>', 'Folder inside destination folder. Gets overwritten everytime', 'code')
24
24
  .option('-t, --title <string>', 'Title of your documentation', 'API')
25
25
  .option('-r, --readme <string>', 'Path to your custom readme')
26
+ .option('-i, --include <string>', 'Pattern to include files/folders (Comma seperated) - *.test.js,include.js')
26
27
  .option('-e, --exclude <string>', 'Pattern to exclude files/folders (Comma seperated) - *.test.js,exclude.js')
27
28
  .option('-w, --watch', 'This flag watches your source files')
28
29
  .option('-rm, --rmPattern [files...]', 'Pattern when removing files. You can ex- and include files. (glob pattern)', '')
package/dist/index.js CHANGED
@@ -88,7 +88,6 @@ var chokidar_1 = __importDefault(require("chokidar"));
88
88
  var del_1 = __importDefault(require("del"));
89
89
  var promises_1 = __importDefault(require("fs/promises"));
90
90
  var mkdirp_1 = __importDefault(require("mkdirp"));
91
- var path_1 = require("path");
92
91
  var readline_1 = __importDefault(require("readline"));
93
92
  var constants_1 = require("./constants");
94
93
  var list_folder_1 = require("./lib/list-folder");
@@ -100,7 +99,7 @@ var vue_sidebar_1 = require("./lib/vue-sidebar");
100
99
  * @returns {Promise}
101
100
  */
102
101
  var createVuepressSidebar = function (options) {
103
- return promises_1.default.writeFile(options.docsFolder + "/config.js", "exports.fileTree=" + JSON.stringify(options.fileTree) + ";exports.sidebarTree = (title = 'Mainpage') => (" + JSON.stringify((0, vue_sidebar_1.generateVueSidebar)(options)).replace('::vuepress-jsdoc-title::', '"+title+"') + ");");
102
+ return promises_1.default.writeFile("".concat(options.docsFolder, "/config.js"), "exports.fileTree=".concat(JSON.stringify(options.fileTree), ";exports.sidebarTree = (title = 'Mainpage') => (").concat(JSON.stringify((0, vue_sidebar_1.generateVueSidebar)(options)).replace('::vuepress-jsdoc-title::', '"+title+"'), ");"));
104
103
  };
105
104
  /**
106
105
  * Parse file
@@ -108,31 +107,17 @@ var createVuepressSidebar = function (options) {
108
107
  * @param {CLIArguments} argv
109
108
  * @returns {Promise}
110
109
  */
111
- var parseDirectoryFile = function (file, argv) { return __awaiter(void 0, void 0, void 0, function () {
112
- var _a, srcFolder, docsFolder, partials, dest, content;
113
- return __generator(this, function (_b) {
114
- switch (_b.label) {
115
- case 0:
116
- _a = parseArguments(argv), srcFolder = _a.srcFolder, docsFolder = _a.docsFolder, partials = _a.partials;
117
- if (!(!file.isDir && file.folder)) return [3 /*break*/, 5];
118
- dest = (0, path_1.join)(docsFolder, file.folder.replace(srcFolder, ''));
119
- content = void 0;
120
- if (!['.jsx', '.tsx', '.ts', '.js'].includes(file.ext || '')) return [3 /*break*/, 2];
121
- return [4 /*yield*/, (0, parser_1.parseFile)(file, srcFolder, docsFolder, argv.jsDocConfigPath, partials)];
122
- case 1:
123
- content = _b.sent();
124
- _b.label = 2;
125
- case 2:
126
- if (!(file.ext === '.vue')) return [3 /*break*/, 4];
127
- return [4 /*yield*/, (0, parser_1.parseVueFile)(file, srcFolder, docsFolder)];
128
- case 3:
129
- content = _b.sent();
130
- _b.label = 4;
131
- case 4: return [2 /*return*/, { content: content, dest: dest }];
132
- case 5: return [2 /*return*/];
110
+ var parseDirectoryFile = function (file, argv) {
111
+ var _a = parseArguments(argv), srcFolder = _a.srcFolder, docsFolder = _a.docsFolder, partials = _a.partials;
112
+ if (!file.isDir && file.folder) {
113
+ if (['.jsx', '.tsx', '.ts', '.js'].includes(file.ext || '')) {
114
+ return (0, parser_1.parseFile)(file, srcFolder, docsFolder, argv.jsDocConfigPath, partials);
133
115
  }
134
- });
135
- }); };
116
+ if (file.ext === '.vue') {
117
+ return (0, parser_1.parseVueFile)(file, srcFolder, docsFolder);
118
+ }
119
+ }
120
+ };
136
121
  /**
137
122
  * Create the readme file. First page when entering the documentation.
138
123
  * @param {CLIArguments} argv
@@ -145,23 +130,23 @@ var createReadmeFile = function (argv, deletedPaths) { return __awaiter(void 0,
145
130
  switch (_b.label) {
146
131
  case 0:
147
132
  _a = parseArguments(argv), srcFolder = _a.srcFolder, codeFolder = _a.codeFolder, docsFolder = _a.docsFolder, title = _a.title, readme = _a.readme;
148
- readMeContent = "### Welcome to " + title;
149
- readmePath = readme || srcFolder + "/README.md";
133
+ readMeContent = "### Welcome to ".concat(title);
134
+ readmePath = readme || "".concat(srcFolder, "/README.md");
150
135
  _b.label = 1;
151
136
  case 1:
152
137
  _b.trys.push([1, 3, , 4]);
153
138
  return [4 /*yield*/, promises_1.default.readFile(readmePath, 'utf-8')];
154
139
  case 2:
155
140
  readMeContent = _b.sent();
156
- if (deletedPaths === null || deletedPaths === void 0 ? void 0 : deletedPaths.some(function (p) { return p.indexOf(codeFolder + "/README.md") !== -1; })) {
157
- console.log("\n" + chalk_1.default.white.bgBlack(' README ') + " " + chalk_1.default.dim(readmePath.replace('README.md', '')) + chalk_1.default.bold('README.md') + " \u2192 " + chalk_1.default.dim(docsFolder) + chalk_1.default.bold('/README.md'));
141
+ if (deletedPaths === null || deletedPaths === void 0 ? void 0 : deletedPaths.some(function (p) { return p.indexOf("".concat(codeFolder, "/README.md")) !== -1; })) {
142
+ console.log("\n".concat(chalk_1.default.white.bgBlack(' README '), " ").concat(chalk_1.default.dim(readmePath.replace('README.md', ''))).concat(chalk_1.default.bold('README.md'), " \u2192 ").concat(chalk_1.default.dim(docsFolder)).concat(chalk_1.default.bold('/README.md')));
158
143
  }
159
144
  return [3 /*break*/, 4];
160
145
  case 3:
161
146
  e_1 = _b.sent();
162
- console.log("\n" + chalk_1.default.white.bgBlack(' README ') + " Add default README.md");
147
+ console.log("\n".concat(chalk_1.default.white.bgBlack(' README '), " Add default README.md"));
163
148
  return [3 /*break*/, 4];
164
- case 4: return [4 /*yield*/, promises_1.default.writeFile(docsFolder + "/README.md", readMeContent)];
149
+ case 4: return [4 /*yield*/, promises_1.default.writeFile("".concat(docsFolder, "/README.md"), readMeContent)];
165
150
  case 5:
166
151
  _b.sent();
167
152
  return [2 /*return*/];
@@ -175,10 +160,11 @@ var createReadmeFile = function (argv, deletedPaths) { return __awaiter(void 0,
175
160
  */
176
161
  var parseArguments = function (argv) {
177
162
  return {
163
+ include: (argv.include || '').split(',').filter(Boolean),
178
164
  exclude: (argv.exclude || '').split(',').filter(Boolean),
179
165
  srcFolder: argv.source.replace('./', ''),
180
166
  codeFolder: argv.folder,
181
- docsFolder: argv.dist + "/" + argv.folder,
167
+ docsFolder: "".concat(argv.dist, "/").concat(argv.folder),
182
168
  title: argv.title,
183
169
  readme: argv.readme,
184
170
  rmPattern: argv.rmPattern || [],
@@ -190,17 +176,17 @@ var parseArguments = function (argv) {
190
176
  * @param {object} argv passed arguments
191
177
  */
192
178
  var generate = function (argv) { return __awaiter(void 0, void 0, void 0, function () {
193
- var _a, exclude, srcFolder, codeFolder, docsFolder, title, rmPattern, startTime, deletedPaths, lsFolder, parsePromises, _b, _c, file, e_2_1, _d, _e, file, data, e_3_1, result, _f, _g, file, _h, _j, entry, color, resultTime;
179
+ var _a, exclude, include, srcFolder, codeFolder, docsFolder, title, rmPattern, startTime, deletedPaths, lsFolder, parsePromises, _b, _c, file, e_2_1, _loop_1, _d, _e, file, result, _f, _g, file, _h, _j, entry, color, resultTime;
194
180
  var e_2, _k, e_3, _l, e_4, _m, e_5, _o, _p;
195
181
  return __generator(this, function (_q) {
196
182
  switch (_q.label) {
197
183
  case 0:
198
- _a = parseArguments(argv), exclude = _a.exclude, srcFolder = _a.srcFolder, codeFolder = _a.codeFolder, docsFolder = _a.docsFolder, title = _a.title, rmPattern = _a.rmPattern;
184
+ _a = parseArguments(argv), exclude = _a.exclude, include = _a.include, srcFolder = _a.srcFolder, codeFolder = _a.codeFolder, docsFolder = _a.docsFolder, title = _a.title, rmPattern = _a.rmPattern;
199
185
  startTime = +new Date();
200
- return [4 /*yield*/, (0, del_1.default)(__spreadArray([docsFolder + "/**/*"], __read(rmPattern), false))];
186
+ return [4 /*yield*/, (0, del_1.default)(__spreadArray(["".concat(docsFolder, "/**/*")], __read(rmPattern), false))];
201
187
  case 1:
202
188
  deletedPaths = _q.sent();
203
- return [4 /*yield*/, (0, list_folder_1.listFolder)(srcFolder, exclude)];
189
+ return [4 /*yield*/, (0, list_folder_1.listFolder)(srcFolder, exclude, include)];
204
190
  case 2:
205
191
  lsFolder = _q.sent();
206
192
  return [4 /*yield*/, (0, mkdirp_1.default)(docsFolder)];
@@ -218,7 +204,7 @@ var generate = function (argv) { return __awaiter(void 0, void 0, void 0, functi
218
204
  if (!!file.isDir) return [3 /*break*/, 7];
219
205
  readline_1.default.clearLine(process.stdout, 0);
220
206
  readline_1.default.cursorTo(process.stdout, 0);
221
- process.stdout.write(chalk_1.default.dim(" " + file.path + " "));
207
+ process.stdout.write(chalk_1.default.dim(" ".concat(file.path, " ")));
222
208
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 20); })];
223
209
  case 6:
224
210
  _q.sent();
@@ -240,38 +226,40 @@ var generate = function (argv) { return __awaiter(void 0, void 0, void 0, functi
240
226
  case 11:
241
227
  readline_1.default.clearLine(process.stdout, 0);
242
228
  readline_1.default.cursorTo(process.stdout, 0);
243
- _q.label = 12;
244
- case 12:
245
- _q.trys.push([12, 17, 18, 19]);
246
- _d = __values(lsFolder.paths), _e = _d.next();
247
- _q.label = 13;
248
- case 13:
249
- if (!!_e.done) return [3 /*break*/, 16];
250
- file = _e.value;
251
- return [4 /*yield*/, parseDirectoryFile(file, argv)];
252
- case 14:
253
- data = _q.sent();
254
- if (data) {
255
- parsePromises.push((0, parser_1.writeContentToFile)(data.content, data.dest));
256
- }
257
- _q.label = 15;
258
- case 15:
259
- _e = _d.next();
260
- return [3 /*break*/, 13];
261
- case 16: return [3 /*break*/, 19];
262
- case 17:
263
- e_3_1 = _q.sent();
264
- e_3 = { error: e_3_1 };
265
- return [3 /*break*/, 19];
266
- case 18:
229
+ _loop_1 = function (file) {
230
+ parsePromises.push((function () { return __awaiter(void 0, void 0, void 0, function () {
231
+ var data;
232
+ return __generator(this, function (_a) {
233
+ switch (_a.label) {
234
+ case 0: return [4 /*yield*/, parseDirectoryFile(file, argv)];
235
+ case 1:
236
+ data = _a.sent();
237
+ if (data && (data === null || data === void 0 ? void 0 : data.relativePathDest)) {
238
+ return [2 /*return*/, (0, parser_1.writeContentToFile)(data, data.relativePathDest)];
239
+ }
240
+ return [2 /*return*/];
241
+ }
242
+ });
243
+ }); })());
244
+ };
267
245
  try {
268
- if (_e && !_e.done && (_l = _d.return)) _l.call(_d);
246
+ // iterate through files and parse them
247
+ for (_d = __values(lsFolder.paths), _e = _d.next(); !_e.done; _e = _d.next()) {
248
+ file = _e.value;
249
+ _loop_1(file);
250
+ }
269
251
  }
270
- finally { if (e_3) throw e_3.error; }
271
- return [7 /*endfinally*/];
272
- case 19: return [4 /*yield*/, Promise.all(parsePromises)];
273
- case 20:
252
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
253
+ finally {
254
+ try {
255
+ if (_e && !_e.done && (_l = _d.return)) _l.call(_d);
256
+ }
257
+ finally { if (e_3) throw e_3.error; }
258
+ }
259
+ return [4 /*yield*/, Promise.all(parsePromises)];
260
+ case 12:
274
261
  result = _q.sent();
262
+ result = result.filter(Boolean);
275
263
  // write vuepress sidebar
276
264
  return [4 /*yield*/, createVuepressSidebar({
277
265
  fileTree: lsFolder.tree,
@@ -280,14 +268,14 @@ var generate = function (argv) { return __awaiter(void 0, void 0, void 0, functi
280
268
  codeFolder: codeFolder,
281
269
  title: title
282
270
  })];
283
- case 21:
271
+ case 13:
284
272
  // write vuepress sidebar
285
273
  _q.sent();
286
274
  try {
287
275
  // print stats
288
276
  for (_f = __values(lsFolder.excluded), _g = _f.next(); !_g.done; _g = _f.next()) {
289
277
  file = _g.value;
290
- console.log(chalk_1.default.reset.inverse.bold.blue(' EXCLUDE '), "" + chalk_1.default.dim(file.folder) + chalk_1.default.bold(file.name + file.ext));
278
+ console.log(chalk_1.default.reset.inverse.bold.blue(' EXCLUDE '), "".concat(chalk_1.default.dim(file.folder)).concat(chalk_1.default.bold(file.name + file.ext)));
291
279
  }
292
280
  }
293
281
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
@@ -309,7 +297,7 @@ var generate = function (argv) { return __awaiter(void 0, void 0, void 0, functi
309
297
  _p[constants_1.StatisticType.EMPTY] = 'yellow',
310
298
  _p[constants_1.StatisticType.EXCLUDE] = 'blue',
311
299
  _p)[entry.type];
312
- console.log(chalk_1.default.reset.inverse.bold[color](" " + entry.type + " "), "" + chalk_1.default.dim(entry.relativePathSrc) + chalk_1.default.bold(entry.file.name + entry.file.ext) + " \u2192 " + chalk_1.default.dim(entry.relativePathDest) + chalk_1.default.bold(entry.file.name + '.md'));
300
+ console.log(chalk_1.default.reset.inverse.bold[color](" ".concat(entry.type, " ")), "".concat(chalk_1.default.dim(entry.relativePathSrc)).concat(chalk_1.default.bold(entry.file.name + entry.file.ext), " \u2192 ").concat(chalk_1.default.dim(entry.relativePathDest)).concat(chalk_1.default.bold(entry.file.name + '.md')));
313
301
  }
314
302
  }
315
303
  catch (e_5_1) { e_5 = { error: e_5_1 }; }
@@ -321,11 +309,11 @@ var generate = function (argv) { return __awaiter(void 0, void 0, void 0, functi
321
309
  }
322
310
  // create README.md
323
311
  return [4 /*yield*/, createReadmeFile(argv, deletedPaths)];
324
- case 22:
312
+ case 14:
325
313
  // create README.md
326
314
  _q.sent();
327
315
  resultTime = (Math.abs(startTime - +new Date()) / 1000).toFixed(2);
328
- console.log("\n\u23F0 Time: " + resultTime + "s");
316
+ console.log("\n\u23F0 Time: ".concat(resultTime, "s"));
329
317
  watchFiles(argv);
330
318
  return [2 /*return*/];
331
319
  }
@@ -337,50 +325,46 @@ exports.generate = generate;
337
325
  * @param {CLIArguments} argv
338
326
  */
339
327
  var watchFiles = function (argv) {
340
- var _a = parseArguments(argv), exclude = _a.exclude, srcFolder = _a.srcFolder, codeFolder = _a.codeFolder, docsFolder = _a.docsFolder, title = _a.title;
328
+ var _a = parseArguments(argv), exclude = _a.exclude, include = _a.include, srcFolder = _a.srcFolder, codeFolder = _a.codeFolder, docsFolder = _a.docsFolder, title = _a.title;
341
329
  if (argv.watch) {
342
330
  console.log('\n---\n\n👀 watching files...');
343
- var watcher = chokidar_1.default.watch([srcFolder, argv.readme, srcFolder + "/README.md"].filter(Boolean), {
331
+ var watcher = chokidar_1.default.watch([srcFolder, argv.readme, "".concat(srcFolder, "/README.md")].filter(Boolean), {
344
332
  ignored: /(^|[\/\\])\../,
345
333
  persistent: true
346
334
  });
347
335
  watcher.on('change', function (path) { return __awaiter(void 0, void 0, void 0, function () {
348
- var lsFolder, file, data;
349
- return __generator(this, function (_a) {
350
- switch (_a.label) {
351
- case 0: return [4 /*yield*/, (0, list_folder_1.listFolder)(srcFolder, exclude)];
336
+ var lsFolder, file;
337
+ var _a;
338
+ return __generator(this, function (_b) {
339
+ switch (_b.label) {
340
+ case 0: return [4 /*yield*/, (0, list_folder_1.listFolder)(srcFolder, exclude, include)];
352
341
  case 1:
353
- lsFolder = _a.sent();
342
+ lsFolder = _b.sent();
354
343
  file = lsFolder.paths.find(function (p) { return p.path === path; });
355
344
  readline_1.default.clearLine(process.stdout, 0);
356
345
  readline_1.default.cursorTo(process.stdout, 0);
357
- if (!(path === 'README.md' || path === srcFolder + "/README.md")) return [3 /*break*/, 3];
346
+ if (!(path === 'README.md' || path === "".concat(srcFolder, "/README.md"))) return [3 /*break*/, 3];
358
347
  return [4 /*yield*/, createReadmeFile(argv)];
359
348
  case 2:
360
- _a.sent();
361
- _a.label = 3;
349
+ _b.sent();
350
+ _b.label = 3;
362
351
  case 3:
363
- if (!file) return [3 /*break*/, 8];
364
- process.stdout.write(chalk_1.default.dim("update " + (file.name + file.ext)));
365
- return [4 /*yield*/, parseDirectoryFile(file, argv)];
366
- case 4:
367
- data = _a.sent();
368
- if (!data) return [3 /*break*/, 6];
369
- return [4 /*yield*/, (0, parser_1.writeContentToFile)(data.content, data.dest)];
370
- case 5:
371
- _a.sent();
372
- _a.label = 6;
373
- case 6: return [4 /*yield*/, createVuepressSidebar({
374
- fileTree: lsFolder.tree,
375
- srcFolder: srcFolder,
376
- docsFolder: docsFolder,
377
- codeFolder: codeFolder,
378
- title: title
379
- })];
380
- case 7:
381
- _a.sent();
382
- _a.label = 8;
383
- case 8: return [2 /*return*/];
352
+ if (file) {
353
+ process.stdout.write(chalk_1.default.dim("update ".concat(file.name + file.ext)));
354
+ (_a = parseDirectoryFile(file, argv)) === null || _a === void 0 ? void 0 : _a.then(function (data) {
355
+ if (data) {
356
+ (0, parser_1.writeContentToFile)(data, data.relativePathDest);
357
+ }
358
+ createVuepressSidebar({
359
+ fileTree: lsFolder.tree,
360
+ srcFolder: srcFolder,
361
+ docsFolder: docsFolder,
362
+ codeFolder: codeFolder,
363
+ title: title
364
+ });
365
+ });
366
+ }
367
+ return [2 /*return*/];
384
368
  }
385
369
  });
386
370
  }); });
@@ -6,6 +6,7 @@ export interface DirectoryFile {
6
6
  folder?: string;
7
7
  }
8
8
  export interface CLIArguments {
9
+ include: string;
9
10
  exclude: string;
10
11
  partials: string[];
11
12
  rmPattern: string[];
@@ -53,10 +53,10 @@ exports.parseComment = parseComment;
53
53
  var parseVuepressFileHeader = function (content, file) {
54
54
  var _a = (0, exports.parseComment)(content), frontmatter = _a.frontmatter, attributes = _a.attributes;
55
55
  var fileContent = '---\n';
56
- fileContent += !(attributes === null || attributes === void 0 ? void 0 : attributes.title) ? "title: " + file.name : '';
56
+ fileContent += !(attributes === null || attributes === void 0 ? void 0 : attributes.title) ? "title: ".concat(file.name) : '';
57
57
  if (frontmatter) {
58
58
  fileContent += !(attributes === null || attributes === void 0 ? void 0 : attributes.title) ? '\n' : '';
59
- fileContent += "" + frontmatter;
59
+ fileContent += "".concat(frontmatter);
60
60
  }
61
61
  fileContent += '\n---\n';
62
62
  if ((attributes === null || attributes === void 0 ? void 0 : attributes.title) || file.ext !== '.vue') {
@@ -67,7 +67,7 @@ var parseVuepressFileHeader = function (content, file) {
67
67
  else if (attributes === null || attributes === void 0 ? void 0 : attributes.title) {
68
68
  headline = attributes.title;
69
69
  }
70
- fileContent += "\n# " + headline + "\n\n";
70
+ fileContent += "\n# ".concat(headline, "\n\n");
71
71
  }
72
72
  return fileContent;
73
73
  };
@@ -3,11 +3,12 @@ import { DirectoryFile, FileTree } from '../interfaces';
3
3
  * Recursively traverse folders and return exluded files, a file list and a file tree.
4
4
  * @param {string} srcPath path to source dir
5
5
  * @param {array} exclude exluded file patter list
6
+ * @param {array} include included file patter list
6
7
  * @param {string} mainPath path to hold source dir
7
8
  * @param {object} tree tree array
8
9
  * @returns {object} paths array, tree, excluded array
9
10
  */
10
- export declare const listFolder: (srcPath: string, exclude: string[], mainPath?: string | undefined, tree?: FileTree[]) => Promise<{
11
+ export declare const listFolder: (srcPath: string, exclude: string[], include: string[], mainPath?: string | undefined, tree?: FileTree[]) => Promise<{
11
12
  paths: DirectoryFile[];
12
13
  tree: FileTree[];
13
14
  excluded: DirectoryFile[];
@@ -100,11 +100,12 @@ var path_1 = __importDefault(require("path"));
100
100
  * Recursively traverse folders and return exluded files, a file list and a file tree.
101
101
  * @param {string} srcPath path to source dir
102
102
  * @param {array} exclude exluded file patter list
103
+ * @param {array} include included file patter list
103
104
  * @param {string} mainPath path to hold source dir
104
105
  * @param {object} tree tree array
105
106
  * @returns {object} paths array, tree, excluded array
106
107
  */
107
- var listFolder = function (srcPath, exclude, mainPath, tree) {
108
+ var listFolder = function (srcPath, exclude, include, mainPath, tree) {
108
109
  if (tree === void 0) { tree = []; }
109
110
  return __awaiter(void 0, void 0, void 0, function () {
110
111
  var paths, excluded, dirs, _a, dirs_1, dirs_1_1, dirent, filePath, isDir, ext, name_1, folder, file, baseSrc, treeEntry, _b, _c, _d, _e, e_1_1;
@@ -115,7 +116,11 @@ var listFolder = function (srcPath, exclude, mainPath, tree) {
115
116
  if (!Boolean(exclude) || !Array.isArray(exclude)) {
116
117
  exclude = [];
117
118
  }
119
+ if (!Boolean(include) || !Array.isArray(include)) {
120
+ include = [];
121
+ }
118
122
  exclude = exclude.filter(Boolean);
123
+ include = include.filter(Boolean);
119
124
  paths = [];
120
125
  excluded = [];
121
126
  if (!srcPath) return [3 /*break*/, 2];
@@ -151,7 +156,8 @@ var listFolder = function (srcPath, exclude, mainPath, tree) {
151
156
  if (name_1.toLowerCase() === 'readme')
152
157
  return [3 /*break*/, 10];
153
158
  baseSrc = mainPath || srcPath;
154
- if (!!micromatch_1.default.isMatch(path_1.default.join(srcPath.replace(baseSrc, ''), dirent.name), exclude)) return [3 /*break*/, 9];
159
+ if (!(micromatch_1.default.every(path_1.default.join(srcPath.replace(baseSrc, ''), dirent.name), __spreadArray(__spreadArray([], __read(include), false), __read(exclude.map(function (e) { return '!' + e; })), false)) ||
160
+ isDir)) return [3 /*break*/, 9];
155
161
  treeEntry = {
156
162
  name: name_1
157
163
  };
@@ -160,12 +166,12 @@ var listFolder = function (srcPath, exclude, mainPath, tree) {
160
166
  _c = (_b = paths.push).apply;
161
167
  _d = [paths];
162
168
  _e = [[]];
163
- return [4 /*yield*/, (0, exports.listFolder)(filePath, exclude, baseSrc, treeEntry.children)];
169
+ return [4 /*yield*/, (0, exports.listFolder)(filePath, exclude, include, baseSrc, treeEntry.children)];
164
170
  case 6:
165
171
  _c.apply(_b, _d.concat([__spreadArray.apply(void 0, _e.concat([__read.apply(void 0, [(_g.sent()).paths]), false]))]));
166
172
  return [3 /*break*/, 8];
167
173
  case 7:
168
- treeEntry = __assign(__assign({}, treeEntry), { path: "/" + name_1, fullPath: path_1.default.join(srcPath, name_1), ext: ext });
174
+ treeEntry = __assign(__assign({}, treeEntry), { path: "/".concat(name_1), fullPath: path_1.default.join(srcPath, name_1), ext: ext });
169
175
  _g.label = 8;
170
176
  case 8:
171
177
  tree.push(treeEntry);
@@ -123,6 +123,7 @@ var parseFile = function (file, srcFolder, destFolder, configPath, partials) { r
123
123
  fileName = 'index';
124
124
  }
125
125
  return [4 /*yield*/, jsdoc_to_markdown_1.default.render({
126
+ 'no-cache': configPath ? true : false,
126
127
  files: [(0, path_1.join)(process.cwd(), file.folder, fileName + file.ext)],
127
128
  configure: configPath,
128
129
  partial: __spreadArray([
@@ -133,7 +134,7 @@ var parseFile = function (file, srcFolder, destFolder, configPath, partials) { r
133
134
  case 2:
134
135
  content = _b.sent();
135
136
  _a = comment_parser_1.parseVuepressFileHeader;
136
- return [4 /*yield*/, promises_1.default.readFile("" + (0, path_1.join)(folderInSrc, fileName + file.ext), 'utf-8')];
137
+ return [4 /*yield*/, promises_1.default.readFile("".concat((0, path_1.join)(folderInSrc, fileName + file.ext)), 'utf-8')];
137
138
  case 3:
138
139
  fileContent = _a.apply(void 0, [_b.sent(), file]);
139
140
  if (content) {
@@ -195,7 +196,7 @@ var parseVueFile = function (file, srcFolder, destFolder) { return __awaiter(voi
195
196
  case 2:
196
197
  data = _b.sent();
197
198
  _a = comment_parser_1.parseVuepressFileHeader;
198
- return [4 /*yield*/, promises_1.default.readFile("" + (0, path_1.join)(folderInSrc, fileName + file.ext), 'utf-8')];
199
+ return [4 /*yield*/, promises_1.default.readFile("".concat((0, path_1.join)(folderInSrc, fileName + file.ext)), 'utf-8')];
199
200
  case 3:
200
201
  fileContent = _a.apply(void 0, [_b.sent(), file]);
201
202
  if (data.content) {
@@ -244,7 +245,7 @@ var writeContentToFile = function (parseData, dest) { return __awaiter(void 0, v
244
245
  case 1:
245
246
  _b.trys.push([1, 5, , 6]);
246
247
  if (!(parseData === null || parseData === void 0 ? void 0 : parseData.content)) return [3 /*break*/, 4];
247
- path = (0, path_1.join)(dest, parseData.file.name) + ".md";
248
+ path = "".concat((0, path_1.join)(dest, parseData.file.name), ".md");
248
249
  return [4 /*yield*/, (0, mkdirp_1.default)(dest)];
249
250
  case 2:
250
251
  _b.sent();
@@ -50,7 +50,7 @@ var generateVueSidebar = function (_a) {
50
50
  }
51
51
  else if (child.fullPath) {
52
52
  if (fs_1.default.existsSync((0, path_1.join)(docsFolder, child.fullPath.replace(srcFolder, '')) + '.md')) {
53
- newChildren.push(child.fullPath.replace(srcFolder + "/", ''));
53
+ newChildren.push(child.fullPath.replace("".concat(srcFolder, "/"), ''));
54
54
  }
55
55
  }
56
56
  }
@@ -70,7 +70,7 @@ var generateVueSidebar = function (_a) {
70
70
  children: buildChildren(folder.children, folder.name, 0)
71
71
  }); });
72
72
  return _b = {},
73
- _b["/" + codeFolder + "/"] = [
73
+ _b["/".concat(codeFolder, "/")] = [
74
74
  {
75
75
  title: title,
76
76
  collapsable: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vuepress-jsdoc",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "Generate jsdoc markdown files for vuepress",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -13,7 +13,7 @@
13
13
  "prepublishOnly": "npm i && npm run build",
14
14
  "prepare": "husky install",
15
15
  "version": "conventional-changelog -p karma -i CHANGELOG.md -s -r 0 && git add .",
16
- "docs": "./bin/vuepress-jsdoc.js --source=./dist --partials=./example/partials/*.hbs --readme ./README.md --exclude=\"**/*.d.ts,**/interfaces.*,**/constants.*\"",
16
+ "docs": "./bin/vuepress-jsdoc.js --source=./dist --partials=./example/partials/*.hbs --readme ./README.md --include=\"**/*.(ts|js)\" --exclude=\"**/*.d.ts,**/interfaces.*,**/constants.*\"",
17
17
  "docs:dev": "npx concurrently --kill-others \"npm run dev\" \"npm run docs && npx vuepress dev documentation\"",
18
18
  "docs:build": "npm run build && npm run docs && npx vuepress build documentation"
19
19
  },
@@ -80,35 +80,35 @@
80
80
  },
81
81
  "dependencies": {
82
82
  "chalk": "^4.1.2",
83
- "chokidar": "^3.5.2",
84
- "commander": "^8.3.0",
83
+ "chokidar": "^3.5.3",
84
+ "commander": "^9.0.0",
85
85
  "del": "^6.0.0",
86
86
  "front-matter": "^4.0.2",
87
- "jsdoc-to-markdown": "^7.1.0",
87
+ "jsdoc-to-markdown": "^7.1.1",
88
88
  "micromatch": "^4.0.4",
89
89
  "mkdirp": "^1.0.4",
90
- "vue-docgen-cli": "^4.41.3"
90
+ "vue-docgen-cli": "^4.44.15"
91
91
  },
92
92
  "devDependencies": {
93
- "@types/jest": "^27.0.2",
94
- "@types/jsdoc-to-markdown": "^7.0.1",
93
+ "@types/jest": "^27.4.0",
94
+ "@types/jsdoc-to-markdown": "^7.0.3",
95
95
  "@types/micromatch": "^4.0.2",
96
96
  "@types/mkdirp": "^1.0.2",
97
- "@typescript-eslint/eslint-plugin": "^5.4.0",
98
- "@typescript-eslint/parser": "^5.4.0",
99
- "babel-jest": "^27.3.1",
97
+ "@typescript-eslint/eslint-plugin": "^5.12.0",
98
+ "@typescript-eslint/parser": "^5.12.0",
99
+ "babel-jest": "^27.5.1",
100
100
  "cross-env": "^7.0.3",
101
- "eslint": "^8.2.0",
101
+ "eslint": "^8.9.0",
102
102
  "eslint-config-prettier": "^8.3.0",
103
- "eslint-plugin-import": "^2.25.3",
104
- "eslint-plugin-jest": "^25.2.4",
103
+ "eslint-plugin-import": "^2.25.4",
104
+ "eslint-plugin-jest": "^26.1.1",
105
105
  "eslint-plugin-prefer-arrow": "^1.2.3",
106
106
  "husky": "^7.0.4",
107
- "jest": "^27.3.1",
108
- "lint-staged": "^12.0.2",
109
- "memfs": "^3.3.0",
110
- "ts-jest": "^27.0.7",
111
- "typescript": "^4.4.4"
107
+ "jest": "^27.5.1",
108
+ "lint-staged": "^12.3.4",
109
+ "memfs": "^3.4.1",
110
+ "ts-jest": "^27.1.3",
111
+ "typescript": "^4.5.5"
112
112
  },
113
113
  "lint-staged": {
114
114
  "src/**/*.{css,scss,json}": [