node-pluginsmanager 2.4.3 → 2.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/LICENSE +1 -1
- package/lib/cjs/PluginsManager.d.ts +38 -38
- package/lib/cjs/PluginsManager.js +447 -442
- package/lib/cjs/checkers/checkAbsoluteDirectory.d.ts +1 -1
- package/lib/cjs/checkers/checkAbsoluteDirectory.js +20 -20
- package/lib/cjs/checkers/checkDirectory.d.ts +1 -1
- package/lib/cjs/checkers/checkDirectory.js +24 -24
- package/lib/cjs/checkers/checkFunction.d.ts +1 -1
- package/lib/cjs/checkers/checkFunction.js +16 -16
- package/lib/cjs/checkers/checkNonEmptyArray.d.ts +1 -1
- package/lib/cjs/checkers/checkNonEmptyArray.js +19 -19
- package/lib/cjs/checkers/checkNonEmptyString.d.ts +1 -1
- package/lib/cjs/checkers/checkNonEmptyString.js +19 -19
- package/lib/cjs/checkers/checkOrchestrator.d.ts +1 -1
- package/lib/cjs/checkers/checkOrchestrator.js +36 -36
- package/lib/cjs/cmd/cmd.d.ts +1 -1
- package/lib/cjs/cmd/cmd.js +37 -37
- package/lib/cjs/cmd/git/gitInstall.d.ts +1 -1
- package/lib/cjs/cmd/git/gitInstall.js +42 -42
- package/lib/cjs/cmd/git/gitUpdate.d.ts +1 -1
- package/lib/cjs/cmd/git/gitUpdate.js +18 -18
- package/lib/cjs/cmd/npm/npmCmd.d.ts +1 -1
- package/lib/cjs/cmd/npm/npmCmd.js +18 -18
- package/lib/cjs/cmd/npm/npmInstall.d.ts +1 -1
- package/lib/cjs/cmd/npm/npmInstall.js +14 -14
- package/lib/cjs/cmd/npm/npmUpdate.d.ts +1 -1
- package/lib/cjs/cmd/npm/npmUpdate.js +14 -14
- package/lib/cjs/cmd/stdToString.d.ts +1 -1
- package/lib/cjs/cmd/stdToString.js +16 -16
- package/lib/cjs/createPluginByDirectory.d.ts +2 -2
- package/lib/cjs/createPluginByDirectory.js +61 -61
- package/lib/cjs/extractGithub.d.ts +1 -1
- package/lib/cjs/extractGithub.js +20 -20
- package/lib/cjs/initSortedPlugins.d.ts +2 -2
- package/lib/cjs/initSortedPlugins.js +60 -56
- package/lib/cjs/loadSortedPlugins.d.ts +2 -2
- package/lib/cjs/loadSortedPlugins.js +78 -74
- package/lib/cjs/main.cjs +8 -8
- package/lib/cjs/main.d.cts +2 -2
- package/lib/cjs/utils/isDirectory.d.ts +1 -0
- package/lib/cjs/utils/isDirectory.js +26 -0
- package/lib/cjs/utils/rmdirp.d.ts +1 -0
- package/lib/cjs/utils/rmdirp.js +20 -0
- package/package.json +39 -32
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// module
|
|
4
|
-
function stdToString(msg) {
|
|
5
|
-
if ("object" !== typeof msg) {
|
|
6
|
-
return String(msg);
|
|
7
|
-
}
|
|
8
|
-
else if (msg instanceof Buffer) {
|
|
9
|
-
return msg.toString("utf8");
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
return msg.message ? msg.message : String(msg);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.default = stdToString;
|
|
16
|
-
;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// module
|
|
4
|
+
function stdToString(msg) {
|
|
5
|
+
if ("object" !== typeof msg) {
|
|
6
|
+
return String(msg);
|
|
7
|
+
}
|
|
8
|
+
else if (msg instanceof Buffer) {
|
|
9
|
+
return msg.toString("utf8");
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return msg.message ? msg.message : String(msg);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = stdToString;
|
|
16
|
+
;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Orchestrator, tLogger } from "node-pluginsmanager-plugin";
|
|
2
|
-
export default function createPluginByDirectory(directory: string, externalRessourcesDirectory: string, logger: tLogger | null, ...data: any): Promise<Orchestrator>;
|
|
1
|
+
import { Orchestrator, tLogger } from "node-pluginsmanager-plugin";
|
|
2
|
+
export default function createPluginByDirectory(directory: string, externalRessourcesDirectory: string, logger: tLogger | null, ...data: any): Promise<Orchestrator>;
|
|
@@ -1,61 +1,61 @@
|
|
|
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
|
-
// deps
|
|
7
|
-
// natives
|
|
8
|
-
const
|
|
9
|
-
// locals
|
|
10
|
-
const checkAbsoluteDirectory_1 = __importDefault(require("./checkers/checkAbsoluteDirectory"));
|
|
11
|
-
const checkOrchestrator_1 = __importDefault(require("./checkers/checkOrchestrator"));
|
|
12
|
-
const checkFunction_1 = __importDefault(require("./checkers/checkFunction"));
|
|
13
|
-
// module
|
|
14
|
-
function createPluginByDirectory(directory, externalRessourcesDirectory, logger, ...data) {
|
|
15
|
-
return (0, checkAbsoluteDirectory_1.default)("createPluginByDirectory/directory", directory).then(() => {
|
|
16
|
-
return (0, checkAbsoluteDirectory_1.default)("createPluginByDirectory/externalRessourcesDirectory", externalRessourcesDirectory);
|
|
17
|
-
}).then(() => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
try {
|
|
20
|
-
resolve(require(directory));
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
reject(e);
|
|
24
|
-
}
|
|
25
|
-
}).then((Plugin) => {
|
|
26
|
-
if (Plugin.Orchestrator) {
|
|
27
|
-
return Promise.resolve(Plugin.Orchestrator);
|
|
28
|
-
}
|
|
29
|
-
else if (Plugin.default) {
|
|
30
|
-
return Promise.resolve(Plugin.default);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return Promise.resolve(Plugin);
|
|
34
|
-
}
|
|
35
|
-
}).then((Plugin) => {
|
|
36
|
-
return (0, checkFunction_1.default)("createPluginByDirectory/function", Plugin).then(() => {
|
|
37
|
-
const pluginBaseNameDirectory = (0,
|
|
38
|
-
const plugin = new Plugin({
|
|
39
|
-
// usefull for inherited Orchestrators
|
|
40
|
-
"externalRessourcesDirectory": (0,
|
|
41
|
-
"logger": logger,
|
|
42
|
-
// useless, setted in inherited Orchestrators
|
|
43
|
-
"packageFile": "",
|
|
44
|
-
"descriptorFile": "",
|
|
45
|
-
"mediatorFile": "",
|
|
46
|
-
"serverFile": ""
|
|
47
|
-
});
|
|
48
|
-
return (0, checkOrchestrator_1.default)("createPluginByDirectory/orchestrator", plugin).then(() => {
|
|
49
|
-
plugin.name = pluginBaseNameDirectory;
|
|
50
|
-
return plugin.load(...data).then(() => {
|
|
51
|
-
return plugin.name === pluginBaseNameDirectory ? Promise.resolve() : Promise.reject(new Error("Plugin's name (\"" + plugin.name + "\") does not fit with plugin's directory basename (\"" + pluginBaseNameDirectory + "\")"));
|
|
52
|
-
});
|
|
53
|
-
}).then(() => {
|
|
54
|
-
return Promise.resolve(plugin);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
exports.default = createPluginByDirectory;
|
|
61
|
-
;
|
|
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
|
+
// deps
|
|
7
|
+
// natives
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
// locals
|
|
10
|
+
const checkAbsoluteDirectory_1 = __importDefault(require("./checkers/checkAbsoluteDirectory"));
|
|
11
|
+
const checkOrchestrator_1 = __importDefault(require("./checkers/checkOrchestrator"));
|
|
12
|
+
const checkFunction_1 = __importDefault(require("./checkers/checkFunction"));
|
|
13
|
+
// module
|
|
14
|
+
function createPluginByDirectory(directory, externalRessourcesDirectory, logger, ...data) {
|
|
15
|
+
return (0, checkAbsoluteDirectory_1.default)("createPluginByDirectory/directory", directory).then(() => {
|
|
16
|
+
return (0, checkAbsoluteDirectory_1.default)("createPluginByDirectory/externalRessourcesDirectory", externalRessourcesDirectory);
|
|
17
|
+
}).then(() => {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
try {
|
|
20
|
+
resolve(require(directory));
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
}).then((Plugin) => {
|
|
26
|
+
if (Plugin.Orchestrator) {
|
|
27
|
+
return Promise.resolve(Plugin.Orchestrator);
|
|
28
|
+
}
|
|
29
|
+
else if (Plugin.default) {
|
|
30
|
+
return Promise.resolve(Plugin.default);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return Promise.resolve(Plugin);
|
|
34
|
+
}
|
|
35
|
+
}).then((Plugin) => {
|
|
36
|
+
return (0, checkFunction_1.default)("createPluginByDirectory/function", Plugin).then(() => {
|
|
37
|
+
const pluginBaseNameDirectory = (0, node_path_1.basename)(directory);
|
|
38
|
+
const plugin = new Plugin({
|
|
39
|
+
// usefull for inherited Orchestrators
|
|
40
|
+
"externalRessourcesDirectory": (0, node_path_1.join)(externalRessourcesDirectory, pluginBaseNameDirectory),
|
|
41
|
+
"logger": logger,
|
|
42
|
+
// useless, setted in inherited Orchestrators
|
|
43
|
+
"packageFile": "",
|
|
44
|
+
"descriptorFile": "",
|
|
45
|
+
"mediatorFile": "",
|
|
46
|
+
"serverFile": ""
|
|
47
|
+
});
|
|
48
|
+
return (0, checkOrchestrator_1.default)("createPluginByDirectory/orchestrator", plugin).then(() => {
|
|
49
|
+
plugin.name = pluginBaseNameDirectory;
|
|
50
|
+
return plugin.load(...data).then(() => {
|
|
51
|
+
return plugin.name === pluginBaseNameDirectory ? Promise.resolve() : Promise.reject(new Error("Plugin's name (\"" + plugin.name + "\") does not fit with plugin's directory basename (\"" + pluginBaseNameDirectory + "\")"));
|
|
52
|
+
});
|
|
53
|
+
}).then(() => {
|
|
54
|
+
return Promise.resolve(plugin);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.default = createPluginByDirectory;
|
|
61
|
+
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function extractGithub(plugin: any): string;
|
|
1
|
+
export default function extractGithub(plugin: any): string;
|
package/lib/cjs/extractGithub.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// module
|
|
4
|
-
function extractGithub(plugin) {
|
|
5
|
-
let github = "";
|
|
6
|
-
if ("object" === typeof plugin) {
|
|
7
|
-
if ("string" === typeof plugin.github) {
|
|
8
|
-
github = plugin.github;
|
|
9
|
-
}
|
|
10
|
-
else if ("string" === typeof plugin.repository) {
|
|
11
|
-
github = plugin.repository;
|
|
12
|
-
}
|
|
13
|
-
else if (plugin.repository && "string" === typeof plugin.repository.url) {
|
|
14
|
-
github = plugin.repository.url;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return github;
|
|
18
|
-
}
|
|
19
|
-
exports.default = extractGithub;
|
|
20
|
-
;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// module
|
|
4
|
+
function extractGithub(plugin) {
|
|
5
|
+
let github = "";
|
|
6
|
+
if ("object" === typeof plugin) {
|
|
7
|
+
if ("string" === typeof plugin.github) {
|
|
8
|
+
github = plugin.github;
|
|
9
|
+
}
|
|
10
|
+
else if ("string" === typeof plugin.repository) {
|
|
11
|
+
github = plugin.repository;
|
|
12
|
+
}
|
|
13
|
+
else if (plugin.repository && "string" === typeof plugin.repository.url) {
|
|
14
|
+
github = plugin.repository.url;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return github;
|
|
18
|
+
}
|
|
19
|
+
exports.default = extractGithub;
|
|
20
|
+
;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Orchestrator } from "node-pluginsmanager-plugin";
|
|
2
|
-
export default function initSortedPlugins(plugins: Array<Orchestrator>, orderedPluginsNames: Array<string>, emit: (eventName: string, ...subdata: any) => void, ...data: any): Promise<void>;
|
|
1
|
+
import { Orchestrator } from "node-pluginsmanager-plugin";
|
|
2
|
+
export default function initSortedPlugins(plugins: Array<Orchestrator>, orderedPluginsNames: Array<string>, emit: (eventName: string, ...subdata: any) => void, ...data: any): Promise<void>;
|
|
@@ -1,56 +1,60 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// private
|
|
4
|
-
// methods
|
|
5
|
-
function _initPlugin(plugin, emit, ...data) {
|
|
6
|
-
emit("initializing", plugin, ...data);
|
|
7
|
-
return plugin.init(...data).then(() => {
|
|
8
|
-
emit("initialized", plugin, ...data);
|
|
9
|
-
return Promise.resolve();
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
function _initPlugins(pluginsToInit, emit, data, i = 0) {
|
|
13
|
-
return i < pluginsToInit.length ? Promise.resolve().then(() => {
|
|
14
|
-
return _initPlugin(pluginsToInit[i], emit, ...data);
|
|
15
|
-
// loop
|
|
16
|
-
}).then(() => {
|
|
17
|
-
return _initPlugins(pluginsToInit, emit, data, i + 1);
|
|
18
|
-
}) : Promise.resolve();
|
|
19
|
-
}
|
|
20
|
-
// module
|
|
21
|
-
function initSortedPlugins(plugins, orderedPluginsNames, emit, ...data) {
|
|
22
|
-
// if no plugins, does not run
|
|
23
|
-
return !plugins.length ? Promise.resolve() : Promise.resolve().then(() => {
|
|
24
|
-
const sortedPlugins = [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// private
|
|
4
|
+
// methods
|
|
5
|
+
function _initPlugin(plugin, emit, ...data) {
|
|
6
|
+
emit("initializing", plugin, ...data);
|
|
7
|
+
return plugin.init(...data).then(() => {
|
|
8
|
+
emit("initialized", plugin, ...data);
|
|
9
|
+
return Promise.resolve();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function _initPlugins(pluginsToInit, emit, data, i = 0) {
|
|
13
|
+
return i < pluginsToInit.length ? Promise.resolve().then(() => {
|
|
14
|
+
return _initPlugin(pluginsToInit[i], emit, ...data);
|
|
15
|
+
// loop
|
|
16
|
+
}).then(() => {
|
|
17
|
+
return _initPlugins(pluginsToInit, emit, data, i + 1);
|
|
18
|
+
}) : Promise.resolve();
|
|
19
|
+
}
|
|
20
|
+
// module
|
|
21
|
+
function initSortedPlugins(plugins, orderedPluginsNames, emit, ...data) {
|
|
22
|
+
// if no plugins, does not run
|
|
23
|
+
return !plugins.length ? Promise.resolve() : Promise.resolve().then(() => {
|
|
24
|
+
const sortedPlugins = [];
|
|
25
|
+
orderedPluginsNames.forEach((pluginName) => {
|
|
26
|
+
const plugin = plugins.find((p) => {
|
|
27
|
+
return p.name === pluginName;
|
|
28
|
+
});
|
|
29
|
+
if (plugin) {
|
|
30
|
+
sortedPlugins.push(plugin);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// first, sorted plugins
|
|
34
|
+
return sortedPlugins.length ?
|
|
35
|
+
_initPlugins(sortedPlugins, emit, data) :
|
|
36
|
+
Promise.resolve();
|
|
37
|
+
}).then(() => {
|
|
38
|
+
const unsortedPlugin = [
|
|
39
|
+
...plugins.filter((plugin) => {
|
|
40
|
+
return !orderedPluginsNames.includes(plugin.name);
|
|
41
|
+
}).sort((a, b) => {
|
|
42
|
+
if (a.name < b.name) {
|
|
43
|
+
return -1;
|
|
44
|
+
}
|
|
45
|
+
else if (a.name > b.name) {
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
];
|
|
53
|
+
// then, all other plugins, asynchronously
|
|
54
|
+
return unsortedPlugin.length ?
|
|
55
|
+
_initPlugins(unsortedPlugin, emit, data) :
|
|
56
|
+
Promise.resolve();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
exports.default = initSortedPlugins;
|
|
60
|
+
;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Orchestrator, tLogger } from "node-pluginsmanager-plugin";
|
|
2
|
-
export default function loadSortedPlugins(globalDirectory: string, externalRessourcesDirectory: string, files: Array<string>, loadedPlugins: Array<Orchestrator>, orderedPluginsNames: Array<string>, emit: (eventName: string, ...subdata: any) => void, logger: tLogger | null, ...data: any): Promise<void>;
|
|
1
|
+
import { Orchestrator, tLogger } from "node-pluginsmanager-plugin";
|
|
2
|
+
export default function loadSortedPlugins(globalDirectory: string, externalRessourcesDirectory: string, files: Array<string>, loadedPlugins: Array<Orchestrator>, orderedPluginsNames: Array<string>, emit: (eventName: string, ...subdata: any) => void, logger: tLogger | null, ...data: any): Promise<void>;
|
|
@@ -1,74 +1,78 @@
|
|
|
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
|
-
// deps
|
|
7
|
-
// natives
|
|
8
|
-
const
|
|
9
|
-
// locals
|
|
10
|
-
const createPluginByDirectory_1 = __importDefault(require("./createPluginByDirectory"));
|
|
11
|
-
// private
|
|
12
|
-
// methods
|
|
13
|
-
function _loadPlugin(globalDirectory, externalRessourcesDirectory, pluginFileName, loadedPlugins, emit, logger, ...data) {
|
|
14
|
-
// is already loaded ?
|
|
15
|
-
const plugin = loadedPlugins.find((p) => {
|
|
16
|
-
return pluginFileName === p.name;
|
|
17
|
-
});
|
|
18
|
-
// is already exists ?
|
|
19
|
-
return plugin ? Promise.resolve() : Promise.resolve().then(() => {
|
|
20
|
-
emit("loading", pluginFileName, ...data);
|
|
21
|
-
const directory = (0,
|
|
22
|
-
return (0, createPluginByDirectory_1.default)(directory, externalRessourcesDirectory, logger, ...data);
|
|
23
|
-
// emit event
|
|
24
|
-
}).then((createdPlugin) => {
|
|
25
|
-
emit("loaded", createdPlugin, ...data);
|
|
26
|
-
loadedPlugins.push(createdPlugin);
|
|
27
|
-
return Promise.resolve();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function _loadPlugins(globalDirectory, externalRessourcesDirectory, pluginsToLoad, loadedPlugins, emit, logger, data, i = 0) {
|
|
31
|
-
return i < pluginsToLoad.length ? Promise.resolve().then(() => {
|
|
32
|
-
return _loadPlugin(globalDirectory, externalRessourcesDirectory, pluginsToLoad[i], loadedPlugins, emit, logger, ...data);
|
|
33
|
-
// loop
|
|
34
|
-
}).then(() => {
|
|
35
|
-
return _loadPlugins(globalDirectory, externalRessourcesDirectory, pluginsToLoad, loadedPlugins, emit, logger, data, i + 1);
|
|
36
|
-
}) : Promise.resolve();
|
|
37
|
-
}
|
|
38
|
-
// module
|
|
39
|
-
function loadSortedPlugins(globalDirectory, externalRessourcesDirectory, files, loadedPlugins, orderedPluginsNames, emit, logger, ...data) {
|
|
40
|
-
// if no files, does not run
|
|
41
|
-
return !files.length ? Promise.resolve() : Promise.resolve().then(() => {
|
|
42
|
-
const sortedPluginsNames = [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
;
|
|
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
|
+
// deps
|
|
7
|
+
// natives
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
// locals
|
|
10
|
+
const createPluginByDirectory_1 = __importDefault(require("./createPluginByDirectory"));
|
|
11
|
+
// private
|
|
12
|
+
// methods
|
|
13
|
+
function _loadPlugin(globalDirectory, externalRessourcesDirectory, pluginFileName, loadedPlugins, emit, logger, ...data) {
|
|
14
|
+
// is already loaded ?
|
|
15
|
+
const plugin = loadedPlugins.find((p) => {
|
|
16
|
+
return pluginFileName === p.name;
|
|
17
|
+
});
|
|
18
|
+
// is already exists ?
|
|
19
|
+
return plugin ? Promise.resolve() : Promise.resolve().then(() => {
|
|
20
|
+
emit("loading", pluginFileName, ...data);
|
|
21
|
+
const directory = (0, node_path_1.join)(globalDirectory, pluginFileName);
|
|
22
|
+
return (0, createPluginByDirectory_1.default)(directory, externalRessourcesDirectory, logger, ...data);
|
|
23
|
+
// emit event
|
|
24
|
+
}).then((createdPlugin) => {
|
|
25
|
+
emit("loaded", createdPlugin, ...data);
|
|
26
|
+
loadedPlugins.push(createdPlugin);
|
|
27
|
+
return Promise.resolve();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function _loadPlugins(globalDirectory, externalRessourcesDirectory, pluginsToLoad, loadedPlugins, emit, logger, data, i = 0) {
|
|
31
|
+
return i < pluginsToLoad.length ? Promise.resolve().then(() => {
|
|
32
|
+
return _loadPlugin(globalDirectory, externalRessourcesDirectory, pluginsToLoad[i], loadedPlugins, emit, logger, ...data);
|
|
33
|
+
// loop
|
|
34
|
+
}).then(() => {
|
|
35
|
+
return _loadPlugins(globalDirectory, externalRessourcesDirectory, pluginsToLoad, loadedPlugins, emit, logger, data, i + 1);
|
|
36
|
+
}) : Promise.resolve();
|
|
37
|
+
}
|
|
38
|
+
// module
|
|
39
|
+
function loadSortedPlugins(globalDirectory, externalRessourcesDirectory, files, loadedPlugins, orderedPluginsNames, emit, logger, ...data) {
|
|
40
|
+
// if no files, does not run
|
|
41
|
+
return !files.length ? Promise.resolve() : Promise.resolve().then(() => {
|
|
42
|
+
const sortedPluginsNames = [];
|
|
43
|
+
orderedPluginsNames.forEach((pluginName) => {
|
|
44
|
+
const plugin = files.find((p) => {
|
|
45
|
+
return p === pluginName;
|
|
46
|
+
});
|
|
47
|
+
if (plugin) {
|
|
48
|
+
sortedPluginsNames.push(pluginName);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// first, sorted plugins
|
|
52
|
+
return sortedPluginsNames.length ?
|
|
53
|
+
_loadPlugins(globalDirectory, externalRessourcesDirectory, sortedPluginsNames, loadedPlugins, emit, logger, data) :
|
|
54
|
+
Promise.resolve();
|
|
55
|
+
}).then(() => {
|
|
56
|
+
const unsortedPluginsNames = [
|
|
57
|
+
...files.filter((pluginName) => {
|
|
58
|
+
return !orderedPluginsNames.includes(pluginName);
|
|
59
|
+
}).sort((a, b) => {
|
|
60
|
+
if (a < b) {
|
|
61
|
+
return -1;
|
|
62
|
+
}
|
|
63
|
+
else if (a > b) {
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
];
|
|
71
|
+
// then, all other plugins, asynchronously
|
|
72
|
+
return unsortedPluginsNames.length ?
|
|
73
|
+
_loadPlugins(globalDirectory, externalRessourcesDirectory, unsortedPluginsNames, loadedPlugins, emit, logger, data) :
|
|
74
|
+
Promise.resolve();
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.default = loadSortedPlugins;
|
|
78
|
+
;
|
package/lib/cjs/main.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
// deps
|
|
6
|
-
// locals
|
|
7
|
-
const PluginsManager_1 = __importDefault(require("./PluginsManager"));
|
|
8
|
-
module.exports = PluginsManager_1.default;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
// deps
|
|
6
|
+
// locals
|
|
7
|
+
const PluginsManager_1 = __importDefault(require("./PluginsManager"));
|
|
8
|
+
module.exports = PluginsManager_1.default;
|
package/lib/cjs/main.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import PluginsManager from "./PluginsManager";
|
|
2
|
-
export = PluginsManager;
|
|
1
|
+
import PluginsManager from "./PluginsManager";
|
|
2
|
+
export = PluginsManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function isDirectory(directory: string): Promise<boolean>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// deps
|
|
4
|
+
// natives
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
// module
|
|
7
|
+
function isDirectory(directory) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
if ("undefined" === typeof directory) {
|
|
10
|
+
reject(new ReferenceError("missing \"directory\" argument"));
|
|
11
|
+
}
|
|
12
|
+
else if ("string" !== typeof directory) {
|
|
13
|
+
reject(new TypeError("\"directory\" argument is not a string"));
|
|
14
|
+
}
|
|
15
|
+
else if ("" === directory.trim()) {
|
|
16
|
+
reject(new Error("\"directory\" argument is empty"));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
(0, node_fs_1.lstat)(directory, (err, stats) => {
|
|
20
|
+
return resolve(Boolean(!err && stats.isDirectory()));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports.default = isDirectory;
|
|
26
|
+
;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function rmdirp(directory: string): Promise<void>;
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
// deps
|
|
7
|
+
// natives
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
// locals
|
|
10
|
+
const isDirectory_1 = __importDefault(require("./isDirectory"));
|
|
11
|
+
// module
|
|
12
|
+
function rmdirp(directory) {
|
|
13
|
+
return (0, isDirectory_1.default)(directory).then((exists) => {
|
|
14
|
+
return exists ? (0, promises_1.rm)(directory, {
|
|
15
|
+
"recursive": true
|
|
16
|
+
}) : Promise.resolve();
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
exports.default = rmdirp;
|
|
20
|
+
;
|