honkit 3.6.23 → 3.7.2
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/lib/constants/defaultPlugins.js +1 -2
- package/lib/json/encodePage.js +7 -0
- package/lib/json/encodeSummaryArticle.js +5 -1
- package/lib/json/encodeSummaryArticleWithCache.js +36 -0
- package/lib/models/__tests__/plugin.js +24 -0
- package/lib/models/__tests__/summaryArticle.js +55 -0
- package/lib/models/plugin.js +7 -4
- package/lib/models/pluginDependency.js +1 -18
- package/lib/modifiers/config/addPlugin.js +0 -1
- package/lib/output/website/copyPluginAssets.js +0 -2
- package/lib/output/website/createTemplateEngine.js +0 -1
- package/lib/plugins/listResources.js +0 -3
- package/package.json +4 -2
- package/lib/plugins/__tests__/findInstalled.js +0 -25
- package/lib/plugins/findInstalled.js +0 -87
|
@@ -12,9 +12,8 @@ const pkg = require("../../package.json");
|
|
|
12
12
|
* @return {PluginDependency}
|
|
13
13
|
*/
|
|
14
14
|
function createFromDependency(pluginName) {
|
|
15
|
-
const npmID =
|
|
15
|
+
const npmID = "gitbook-plugin-" + pluginName;
|
|
16
16
|
const version = pkg.dependencies[npmID];
|
|
17
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'create' does not exist on type 'Class'.
|
|
18
17
|
return pluginDependency_1.default.create(pluginName, version);
|
|
19
18
|
}
|
|
20
19
|
exports.default = immutable_1.default.List(["highlight", "search", "lunr", "fontsettings", "theme-default"]).map(createFromDependency);
|
package/lib/json/encodePage.js
CHANGED
|
@@ -24,6 +24,13 @@ function encodePage(page, summary) {
|
|
|
24
24
|
if (prevArticle) {
|
|
25
25
|
result.previous = (0, encodeSummaryArticle_1.default)(prevArticle);
|
|
26
26
|
}
|
|
27
|
+
const articles = article
|
|
28
|
+
.getArticles()
|
|
29
|
+
.map((article) => (0, encodeSummaryArticle_1.default)(article))
|
|
30
|
+
.toJS();
|
|
31
|
+
if (articles.length > 0) {
|
|
32
|
+
result.articles = articles;
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
35
|
result.content = page.getContent();
|
|
29
36
|
result.dir = page.getDir();
|
|
@@ -5,13 +5,17 @@
|
|
|
5
5
|
@param {SummaryArticle}
|
|
6
6
|
@return {Object}
|
|
7
7
|
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const encodeSummaryArticleWithCache_1 = __importDefault(require("./encodeSummaryArticleWithCache"));
|
|
9
13
|
function encodeSummaryArticle(article, recursive) {
|
|
10
14
|
let articles = undefined;
|
|
11
15
|
if (recursive !== false) {
|
|
12
16
|
articles = article
|
|
13
17
|
.getArticles()
|
|
14
|
-
.map((article) =>
|
|
18
|
+
.map((article) => (0, encodeSummaryArticleWithCache_1.default)(article))
|
|
15
19
|
.toJS();
|
|
16
20
|
}
|
|
17
21
|
return {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
Encode a SummaryArticle to JSON
|
|
4
|
+
|
|
5
|
+
@param {SummaryArticle}
|
|
6
|
+
@return {Object}
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const lru_map_1 = require("lru_map");
|
|
10
|
+
const LRU_MAP_LIMIT = 1000;
|
|
11
|
+
const articleCacheMap = new lru_map_1.LRUMap(LRU_MAP_LIMIT);
|
|
12
|
+
function encodeSummaryArticleWithCache(article, recursive) {
|
|
13
|
+
if (articleCacheMap.has(article)) {
|
|
14
|
+
return articleCacheMap.get(article);
|
|
15
|
+
}
|
|
16
|
+
let articles = undefined;
|
|
17
|
+
if (recursive !== false) {
|
|
18
|
+
articles = article
|
|
19
|
+
.getArticles()
|
|
20
|
+
.map((article) => encodeSummaryArticleWithCache(article))
|
|
21
|
+
.toJS();
|
|
22
|
+
}
|
|
23
|
+
const encodedArticle = {
|
|
24
|
+
title: article.getTitle(),
|
|
25
|
+
level: article.getLevel(),
|
|
26
|
+
depth: article.getDepth(),
|
|
27
|
+
anchor: article.getAnchor(),
|
|
28
|
+
url: article.getUrl(),
|
|
29
|
+
path: article.getPath(),
|
|
30
|
+
ref: article.getRef(),
|
|
31
|
+
articles: articles,
|
|
32
|
+
};
|
|
33
|
+
articleCacheMap.set(article, encodedArticle);
|
|
34
|
+
return encodedArticle;
|
|
35
|
+
}
|
|
36
|
+
exports.default = encodeSummaryArticleWithCache;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const plugin_1 = __importDefault(require("../plugin"));
|
|
7
|
+
const immutable_1 = __importDefault(require("immutable"));
|
|
7
8
|
describe("Plugin", () => {
|
|
8
9
|
describe("createFromString", () => {
|
|
9
10
|
test("must parse name", () => {
|
|
@@ -17,6 +18,29 @@ describe("Plugin", () => {
|
|
|
17
18
|
expect(plugin.getVersion()).toBe("1.0.0");
|
|
18
19
|
});
|
|
19
20
|
});
|
|
21
|
+
describe("getNpmId", () => {
|
|
22
|
+
it("should return package's name", () => {
|
|
23
|
+
const plugin = new plugin_1.default({
|
|
24
|
+
name: "testplugin",
|
|
25
|
+
version: "*",
|
|
26
|
+
path: "test.js",
|
|
27
|
+
package: immutable_1.default.fromJS({
|
|
28
|
+
name: "testplugin-name"
|
|
29
|
+
}),
|
|
30
|
+
content: immutable_1.default.fromJS({
|
|
31
|
+
hooks: {
|
|
32
|
+
"page:before": function (page) {
|
|
33
|
+
return page;
|
|
34
|
+
},
|
|
35
|
+
page: function (page) {
|
|
36
|
+
return page;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
expect(plugin.getNpmID()).toBe("testplugin-name");
|
|
42
|
+
});
|
|
43
|
+
});
|
|
20
44
|
describe("isLoaded", () => {
|
|
21
45
|
test("must return false for empty plugin", () => {
|
|
22
46
|
const plugin = plugin_1.default.createFromString("hello");
|
|
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const summaryArticle_1 = __importDefault(require("../summaryArticle"));
|
|
7
7
|
const file_1 = __importDefault(require("../file"));
|
|
8
|
+
const encodeSummaryArticleWithCache_1 = __importDefault(require("../../json/encodeSummaryArticleWithCache"));
|
|
9
|
+
const encodeSummaryArticle_1 = __importDefault(require("../../json/encodeSummaryArticle"));
|
|
8
10
|
describe("SummaryArticle", () => {
|
|
9
11
|
describe("createChildLevel", () => {
|
|
10
12
|
test("must create the right level", () => {
|
|
@@ -59,4 +61,57 @@ describe("SummaryArticle", () => {
|
|
|
59
61
|
expect(article.hasAnchor()).toBe(true);
|
|
60
62
|
});
|
|
61
63
|
});
|
|
64
|
+
describe("withCache", function () {
|
|
65
|
+
it("encodeSummaryArticle (non cached) should return an object", function () {
|
|
66
|
+
var article = summaryArticle_1.default.create({
|
|
67
|
+
ref: "1-1.md",
|
|
68
|
+
}, "1.1");
|
|
69
|
+
expect((0, encodeSummaryArticle_1.default)(article)).toBeInstanceOf(Object);
|
|
70
|
+
});
|
|
71
|
+
it("encodeSummaryArticleWithCache (cached) should return an object", function () {
|
|
72
|
+
var article = summaryArticle_1.default.create({
|
|
73
|
+
ref: "1-1.md",
|
|
74
|
+
}, "1.1");
|
|
75
|
+
expect((0, encodeSummaryArticleWithCache_1.default)(article)).toBeInstanceOf(Object);
|
|
76
|
+
});
|
|
77
|
+
it("encodeSummaryArticle (non cached) should return different object when pass difference SummaryArticle", function () {
|
|
78
|
+
var article_1 = summaryArticle_1.default.create({
|
|
79
|
+
ref: "1-1.md"
|
|
80
|
+
}, "1.1");
|
|
81
|
+
var article_2 = summaryArticle_1.default.create({
|
|
82
|
+
ref: "1-2.md"
|
|
83
|
+
}, "1.2");
|
|
84
|
+
expect((0, encodeSummaryArticle_1.default)(article_1)).not.toStrictEqual((0, encodeSummaryArticle_1.default)(article_2));
|
|
85
|
+
});
|
|
86
|
+
it("encodeSummaryArticle (non cached) should return same object when pass same SummaryArticle", function () {
|
|
87
|
+
var article = summaryArticle_1.default.create({
|
|
88
|
+
ref: "1-1.md"
|
|
89
|
+
}, "1.1");
|
|
90
|
+
expect((0, encodeSummaryArticle_1.default)(article)).toStrictEqual((0, encodeSummaryArticle_1.default)(article));
|
|
91
|
+
});
|
|
92
|
+
it("encodeSummaryArticleWithCache (cached) should return different object when pass difference SummaryArticle", function () {
|
|
93
|
+
var article_1 = summaryArticle_1.default.create({
|
|
94
|
+
ref: "1-1.md"
|
|
95
|
+
}, "1.1");
|
|
96
|
+
var article_2 = summaryArticle_1.default.create({
|
|
97
|
+
ref: "1-2.md"
|
|
98
|
+
}, "1.2");
|
|
99
|
+
expect((0, encodeSummaryArticle_1.default)(article_1)).not.toStrictEqual((0, encodeSummaryArticleWithCache_1.default)(article_2));
|
|
100
|
+
});
|
|
101
|
+
it("encodeSummaryArticleWithCache (cached) should return same object when pass same SummaryArticle", function () {
|
|
102
|
+
var article = summaryArticle_1.default.create({
|
|
103
|
+
ref: "1-1.md"
|
|
104
|
+
}, "1.1");
|
|
105
|
+
expect((0, encodeSummaryArticle_1.default)(article)).toStrictEqual((0, encodeSummaryArticle_1.default)(article));
|
|
106
|
+
});
|
|
107
|
+
it("encodeSummaryArticle (non cached) and encodeSummaryArticleWithCache (cached) should return same object when pass same SummaryArticle", function () {
|
|
108
|
+
var article = summaryArticle_1.default.create({
|
|
109
|
+
ref: "1-1.md",
|
|
110
|
+
articles: [summaryArticle_1.default.create({
|
|
111
|
+
ref: "2-1.md",
|
|
112
|
+
}, "2.1")]
|
|
113
|
+
}, "1.1");
|
|
114
|
+
expect((0, encodeSummaryArticle_1.default)(article)).toStrictEqual((0, encodeSummaryArticleWithCache_1.default)(article));
|
|
115
|
+
});
|
|
116
|
+
});
|
|
62
117
|
});
|
package/lib/models/plugin.js
CHANGED
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const immutable_1 = __importDefault(require("immutable"));
|
|
7
7
|
const templateBlock_1 = __importDefault(require("./templateBlock"));
|
|
8
|
-
const pluginDependency_1 = __importDefault(require("./pluginDependency"));
|
|
9
8
|
const themePrefix_1 = __importDefault(require("../constants/themePrefix"));
|
|
10
9
|
const DEFAULT_VERSION = "*";
|
|
11
10
|
class Plugin extends immutable_1.default.Record({
|
|
@@ -46,10 +45,15 @@ class Plugin extends immutable_1.default.Record({
|
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
48
47
|
* Return the ID on NPM for this plugin
|
|
48
|
+
* return package.json's name
|
|
49
49
|
* @return {string}
|
|
50
50
|
*/
|
|
51
51
|
getNpmID() {
|
|
52
|
-
|
|
52
|
+
const pkg = this.getPackage().toJS();
|
|
53
|
+
if ("name" in pkg) {
|
|
54
|
+
return pkg["name"];
|
|
55
|
+
}
|
|
56
|
+
throw new Error(`${this.getName()} plugin's package.json does not have "name" fields.`);
|
|
53
57
|
}
|
|
54
58
|
/**
|
|
55
59
|
* Check if a plugin is loaded
|
|
@@ -112,8 +116,8 @@ class Plugin extends immutable_1.default.Record({
|
|
|
112
116
|
}
|
|
113
117
|
/**
|
|
114
118
|
* Create a plugin from a string
|
|
115
|
-
* @param {string}
|
|
116
119
|
* @return {Plugin}
|
|
120
|
+
* @param s
|
|
117
121
|
*/
|
|
118
122
|
static createFromString(s) {
|
|
119
123
|
const parts = s.split("@");
|
|
@@ -135,5 +139,4 @@ class Plugin extends immutable_1.default.Record({
|
|
|
135
139
|
});
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
|
-
Plugin.nameToNpmID = pluginDependency_1.default.nameToNpmID;
|
|
139
142
|
exports.default = Plugin;
|
|
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const is_1 = __importDefault(require("is"));
|
|
7
7
|
const semver_1 = __importDefault(require("semver"));
|
|
8
8
|
const immutable_1 = __importDefault(require("immutable"));
|
|
9
|
-
const pluginPrefix_1 = __importDefault(require("../constants/pluginPrefix"));
|
|
10
9
|
const DEFAULT_VERSION = "*";
|
|
11
10
|
/*
|
|
12
|
-
* PluginDependency represents the
|
|
11
|
+
* PluginDependency represents the information about a plugin
|
|
13
12
|
* stored in config.plugins
|
|
14
13
|
*/
|
|
15
14
|
class PluginDependency extends immutable_1.default.Record({
|
|
@@ -43,13 +42,6 @@ class PluginDependency extends immutable_1.default.Record({
|
|
|
43
42
|
}
|
|
44
43
|
return this.set("enabled", state);
|
|
45
44
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Return NPM ID for the dependency
|
|
48
|
-
* @return {string}
|
|
49
|
-
*/
|
|
50
|
-
getNpmID() {
|
|
51
|
-
return PluginDependency.nameToNpmID(this.getName());
|
|
52
|
-
}
|
|
53
45
|
/**
|
|
54
46
|
* Is the plugin using a git dependency
|
|
55
47
|
* @return {boolean}
|
|
@@ -59,7 +51,6 @@ class PluginDependency extends immutable_1.default.Record({
|
|
|
59
51
|
}
|
|
60
52
|
/**
|
|
61
53
|
* Create a plugin with a name and a plugin
|
|
62
|
-
* @param {string}
|
|
63
54
|
* @return {Plugin|undefined}
|
|
64
55
|
*/
|
|
65
56
|
static create(name, version, enabled) {
|
|
@@ -180,13 +171,5 @@ class PluginDependency extends immutable_1.default.Record({
|
|
|
180
171
|
})
|
|
181
172
|
.toJS();
|
|
182
173
|
}
|
|
183
|
-
/**
|
|
184
|
-
* Return NPM id for a plugin name
|
|
185
|
-
* @param {string}
|
|
186
|
-
* @return {string}
|
|
187
|
-
*/
|
|
188
|
-
static nameToNpmID(s) {
|
|
189
|
-
return pluginPrefix_1.default + s;
|
|
190
|
-
}
|
|
191
174
|
}
|
|
192
175
|
exports.default = PluginDependency;
|
|
@@ -19,7 +19,6 @@ function addPlugin(config, pluginName, version) {
|
|
|
19
19
|
return (0, togglePlugin_1.default)(config, pluginName, true);
|
|
20
20
|
}
|
|
21
21
|
let deps = config.getPluginDependencies();
|
|
22
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'create' does not exist on type 'Class'.
|
|
23
22
|
const dep = pluginDependency_1.default.create(pluginName, version);
|
|
24
23
|
deps = deps.push(dep);
|
|
25
24
|
return config.setPluginDependencies(deps);
|
|
@@ -37,7 +37,6 @@ function templateFolder(dir) {
|
|
|
37
37
|
function createTemplateEngine(output, currentFile) {
|
|
38
38
|
const book = output.getBook();
|
|
39
39
|
const state = output.getState();
|
|
40
|
-
// @ts-expect-error: state type
|
|
41
40
|
const i18n = state.getI18n();
|
|
42
41
|
const config = book.getConfig();
|
|
43
42
|
const summary = book.getSummary();
|
|
@@ -9,9 +9,6 @@ const location_1 = __importDefault(require("../utils/location"));
|
|
|
9
9
|
const pluginResources_1 = __importDefault(require("../constants/pluginResources"));
|
|
10
10
|
/**
|
|
11
11
|
List all resources from a list of plugins
|
|
12
|
-
|
|
13
|
-
@param {OrderedMap<String:Plugin>}
|
|
14
|
-
@param {string} type
|
|
15
12
|
@return {Map<String:List<{url, path}>}
|
|
16
13
|
*/
|
|
17
14
|
function listResources(plugins, resources) {
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "honkit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"description": "HonKit is building beautiful books using Markdown.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"git",
|
|
7
|
+
"markdown",
|
|
7
8
|
"book",
|
|
8
9
|
"honkit",
|
|
9
10
|
"gitbook"
|
|
@@ -80,6 +81,7 @@
|
|
|
80
81
|
"json-schema-defaults": "^0.1.1",
|
|
81
82
|
"jsonschema": "1.1.0",
|
|
82
83
|
"juice": "^6.0.0",
|
|
84
|
+
"lru_map": "^0.4.1",
|
|
83
85
|
"memoize-one": "^5.1.1",
|
|
84
86
|
"mkdirp": "^1.0.4",
|
|
85
87
|
"moment": "^2.24.0",
|
|
@@ -107,5 +109,5 @@
|
|
|
107
109
|
"rimraf": "^3.0.2",
|
|
108
110
|
"typescript": "^4.1.3"
|
|
109
111
|
},
|
|
110
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "89e4ff9d86596d7c650c5e83e2d768435d6eef20"
|
|
111
113
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
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
|
-
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const immutable_1 = __importDefault(require("immutable"));
|
|
8
|
-
const findInstalled_1 = __importDefault(require("../findInstalled"));
|
|
9
|
-
describe("findInstalled", () => {
|
|
10
|
-
test.skip("must list default plugins for gitbook directory", () => {
|
|
11
|
-
// Read gitbook-plugins from package.json
|
|
12
|
-
const pkg = require(path_1.default.resolve(__dirname, "../../../package.json"));
|
|
13
|
-
const gitbookPlugins = immutable_1.default.Seq(pkg.dependencies)
|
|
14
|
-
.filter((v, k) => {
|
|
15
|
-
return k.indexOf("gitbook-plugin") === 0;
|
|
16
|
-
})
|
|
17
|
-
// @ts-expect-error
|
|
18
|
-
.cacheResult();
|
|
19
|
-
return (0, findInstalled_1.default)(path_1.default.resolve(__dirname, "../../../")).then((plugins) => {
|
|
20
|
-
expect(plugins.size >= gitbookPlugins.size).toBeTruthy();
|
|
21
|
-
expect(plugins.has("fontsettings")).toBe(true);
|
|
22
|
-
expect(plugins.has("search")).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,87 +0,0 @@
|
|
|
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
|
-
const read_installed_1 = __importDefault(require("read-installed"));
|
|
7
|
-
const immutable_1 = __importDefault(require("immutable"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const promise_1 = __importDefault(require("../utils/promise"));
|
|
10
|
-
const fs_1 = __importDefault(require("../utils/fs"));
|
|
11
|
-
const plugin_1 = __importDefault(require("../models/plugin"));
|
|
12
|
-
const pluginPrefix_1 = __importDefault(require("../constants/pluginPrefix"));
|
|
13
|
-
/**
|
|
14
|
-
* Validate if a package name is a GitBook/HonKit plugin
|
|
15
|
-
*
|
|
16
|
-
* @return {boolean}
|
|
17
|
-
*/
|
|
18
|
-
function validateId(name) {
|
|
19
|
-
return name && name.indexOf(pluginPrefix_1.default) === 0;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* List all packages installed inside a folder
|
|
23
|
-
*
|
|
24
|
-
* @param {string} folder
|
|
25
|
-
* @return {OrderedMap<String:Plugin>}
|
|
26
|
-
*/
|
|
27
|
-
function findInstalled(folder) {
|
|
28
|
-
const options = {
|
|
29
|
-
dev: false,
|
|
30
|
-
log: function () { },
|
|
31
|
-
depth: 4,
|
|
32
|
-
};
|
|
33
|
-
let results = immutable_1.default.OrderedMap();
|
|
34
|
-
function onPackage(pkg, parent) {
|
|
35
|
-
if (!pkg.name)
|
|
36
|
-
return;
|
|
37
|
-
const name = pkg.name;
|
|
38
|
-
const version = pkg.version;
|
|
39
|
-
const pkgPath = pkg.realPath;
|
|
40
|
-
const depth = pkg.depth;
|
|
41
|
-
const dependencies = pkg.dependencies;
|
|
42
|
-
const pluginName = name.slice(pluginPrefix_1.default.length);
|
|
43
|
-
if (!validateId(name)) {
|
|
44
|
-
if (parent)
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
results = results.set(pluginName, new plugin_1.default({
|
|
49
|
-
name: pluginName,
|
|
50
|
-
version: version,
|
|
51
|
-
path: pkgPath,
|
|
52
|
-
depth: depth,
|
|
53
|
-
parent: parent,
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
immutable_1.default.Map(dependencies).forEach((dep) => {
|
|
57
|
-
onPackage(dep, pluginName);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Search for gitbook-plugins in node_modules folder
|
|
61
|
-
const node_modules = path_1.default.join(folder, "node_modules");
|
|
62
|
-
// List all folders in node_modules
|
|
63
|
-
return fs_1.default
|
|
64
|
-
.readdir(node_modules)
|
|
65
|
-
.fail(() => {
|
|
66
|
-
return (0, promise_1.default)([]);
|
|
67
|
-
})
|
|
68
|
-
.then((modules) => {
|
|
69
|
-
return promise_1.default.serie(modules, (module) => {
|
|
70
|
-
// Not a gitbook-plugin
|
|
71
|
-
if (!validateId(module)) {
|
|
72
|
-
return (0, promise_1.default)();
|
|
73
|
-
}
|
|
74
|
-
// Read gitbook-plugin package details
|
|
75
|
-
const module_folder = path_1.default.join(node_modules, module);
|
|
76
|
-
return promise_1.default.nfcall(read_installed_1.default, module_folder, options).then((data) => {
|
|
77
|
-
// @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1.
|
|
78
|
-
onPackage(data);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
})
|
|
82
|
-
.then(() => {
|
|
83
|
-
// Return installed plugins
|
|
84
|
-
return results;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
exports.default = findInstalled;
|