@ts-dev-tools/core 1.12.1 → 1.12.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/dist/bin.js +26 -76
- package/dist/constants.js +2 -2
- package/dist/eslint-plugin-ts-dev-tools/index.js +18 -30
- package/dist/install/command.js +30 -80
- package/dist/install/migrations/20201024173398-init.js +89 -141
- package/dist/install/migrations/20220617100200-prettier-cache.js +9 -49
- package/dist/install/migrations/20240329200200-eslint-ignore.js +9 -49
- package/dist/install/migrations/20240412185500-eslint-config.js +16 -53
- package/dist/install/migrations/20240617094000-config-nx-scopes.js +22 -67
- package/dist/install/migrations/20250623095500-add-prettier-oxc.js +9 -49
- package/dist/install/migrations/20250623095600-remove-prettier-oxc.js +15 -55
- package/dist/services/CmdService.js +17 -21
- package/dist/services/CorePackageService.js +8 -11
- package/dist/services/DuplicateDependenciesService.js +28 -33
- package/dist/services/FileService.js +11 -14
- package/dist/services/GitService.js +36 -83
- package/dist/services/MigrationsService.js +52 -121
- package/dist/services/PackageJson.js +47 -57
- package/dist/services/PackageJsonMerge.js +17 -21
- package/dist/services/PackageManagerService.js +25 -80
- package/dist/services/PeerDependenciesService.js +92 -157
- package/dist/services/PluginService.js +32 -39
- package/dist/services/SymlinkDependenciesService.js +52 -133
- package/dist/services/package-manager/AbstractPackageManagerAdapter.js +84 -138
- package/dist/services/package-manager/NpmPackageManagerAdapter.js +58 -158
- package/dist/services/package-manager/YarnPackageManagerAdapter.js +122 -235
- package/dist/tests/cli.js +12 -57
- package/dist/tests/console.js +5 -6
- package/dist/tests/file-system.js +23 -92
- package/dist/tests/test-cache.js +5 -5
- package/dist/tests/test-packages.js +33 -95
- package/dist/tests/test-project-monorepo.js +22 -85
- package/dist/tests/test-project.js +49 -127
- package/package.json +12 -12
|
@@ -1,97 +1,42 @@
|
|
|
1
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.PackageManagerService = exports.PackageManagerType = void 0;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const NpmPackageManagerAdapter_1 = require("./package-manager/NpmPackageManagerAdapter");
|
|
7
|
+
const PackageManagerType_1 = require("./package-manager/PackageManagerType");
|
|
8
|
+
const YarnPackageManagerAdapter_1 = require("./package-manager/YarnPackageManagerAdapter");
|
|
45
9
|
var PackageManagerType_2 = require("./package-manager/PackageManagerType");
|
|
46
10
|
Object.defineProperty(exports, "PackageManagerType", { enumerable: true, get: function () { return PackageManagerType_2.PackageManagerType; } });
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
PackageManagerService.detectPackageManager = function (dirPath) {
|
|
11
|
+
class PackageManagerService {
|
|
12
|
+
static detectPackageManager(dirPath) {
|
|
51
13
|
if ((0, fs_1.existsSync)((0, path_1.join)(dirPath, "yarn.lock"))) {
|
|
52
14
|
return PackageManagerType_1.PackageManagerType.yarn;
|
|
53
15
|
}
|
|
54
16
|
return PackageManagerType_1.PackageManagerType.npm;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
PackageManagerService.isPackageInstalled = function (packageName, dirPath) {
|
|
71
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
-
return __generator(this, function (_a) {
|
|
73
|
-
return [2 /*return*/, PackageManagerService.getAdapter(dirPath).isPackageInstalled(packageName, dirPath)];
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
PackageManagerService.getNodeModulesPath = function (dirPath) {
|
|
78
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
79
|
-
return __generator(this, function (_a) {
|
|
80
|
-
return [2 /*return*/, PackageManagerService.getAdapter(dirPath).getNodeModulesPath(dirPath)];
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
PackageManagerService.getAdapter = function (dirPath) {
|
|
85
|
-
var packageManager = PackageManagerService.detectPackageManager(dirPath);
|
|
17
|
+
}
|
|
18
|
+
static async addDevPackage(packageName, dirPath) {
|
|
19
|
+
return PackageManagerService.getAdapter(dirPath).addDevPackage(packageName, dirPath);
|
|
20
|
+
}
|
|
21
|
+
static async isMonorepo(dirPath) {
|
|
22
|
+
return PackageManagerService.getAdapter(dirPath).isMonorepo(dirPath);
|
|
23
|
+
}
|
|
24
|
+
static async isPackageInstalled(packageName, dirPath) {
|
|
25
|
+
return PackageManagerService.getAdapter(dirPath).isPackageInstalled(packageName, dirPath);
|
|
26
|
+
}
|
|
27
|
+
static async getNodeModulesPath(dirPath) {
|
|
28
|
+
return PackageManagerService.getAdapter(dirPath).getNodeModulesPath(dirPath);
|
|
29
|
+
}
|
|
30
|
+
static getAdapter(dirPath) {
|
|
31
|
+
const packageManager = PackageManagerService.detectPackageManager(dirPath);
|
|
86
32
|
switch (packageManager) {
|
|
87
33
|
case PackageManagerType_1.PackageManagerType.yarn:
|
|
88
34
|
return new YarnPackageManagerAdapter_1.YarnPackageManagerAdapter();
|
|
89
35
|
case PackageManagerType_1.PackageManagerType.npm:
|
|
90
36
|
return new NpmPackageManagerAdapter_1.NpmPackageManagerAdapter();
|
|
91
37
|
default:
|
|
92
|
-
throw new Error(
|
|
38
|
+
throw new Error(`Unsupported package manager: ${packageManager}`);
|
|
93
39
|
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
}());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
97
42
|
exports.PackageManagerService = PackageManagerService;
|
|
@@ -1,116 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
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;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
3
|
exports.PeerDependenciesService = void 0;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
for (_a = 0, peers_1 = peers; _a < peers_1.length; _a++) {
|
|
70
|
-
peer = peers_1[_a];
|
|
71
|
-
isResolvable = PeerDependenciesService.canResolveFromConsumerRoot(absoluteProjectDir, peer.name);
|
|
72
|
-
if (!isResolvable) {
|
|
73
|
-
sourcePath = PeerDependenciesService.resolvePeerSourcePath(absoluteProjectDir, packageToInspect.path, peer.name);
|
|
74
|
-
if (peer.optional && !(0, fs_1.existsSync)(sourcePath)) {
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
missingPeers.push(__assign(__assign({}, peer), { requiredBy: packageToInspect.name, sourcePath: sourcePath }));
|
|
78
|
-
}
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const PackageJson_1 = require("./PackageJson");
|
|
7
|
+
const PluginService_1 = require("./PluginService");
|
|
8
|
+
class PeerDependenciesService {
|
|
9
|
+
static async executeResolution(absoluteProjectDir) {
|
|
10
|
+
console.info(`Resolving peer dependencies...`);
|
|
11
|
+
const installedPlugins = PluginService_1.PluginService.getInstalledPlugins(absoluteProjectDir);
|
|
12
|
+
const missingPeers = [];
|
|
13
|
+
const packagesToInspect = PeerDependenciesService.getPackagesToInspect(absoluteProjectDir, installedPlugins);
|
|
14
|
+
for (const packageToInspect of packagesToInspect) {
|
|
15
|
+
const peers = PeerDependenciesService.getPackagePeerDependencies(packageToInspect.path);
|
|
16
|
+
for (const peer of peers) {
|
|
17
|
+
const isResolvable = PeerDependenciesService.canResolveFromConsumerRoot(absoluteProjectDir, peer.name);
|
|
18
|
+
if (!isResolvable) {
|
|
19
|
+
const sourcePath = PeerDependenciesService.resolvePeerSourcePath(absoluteProjectDir, packageToInspect.path, peer.name);
|
|
20
|
+
if (peer.optional && !(0, fs_1.existsSync)(sourcePath)) {
|
|
21
|
+
continue;
|
|
79
22
|
}
|
|
23
|
+
missingPeers.push({
|
|
24
|
+
...peer,
|
|
25
|
+
requiredBy: packageToInspect.name,
|
|
26
|
+
sourcePath,
|
|
27
|
+
});
|
|
80
28
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
};
|
|
102
|
-
PeerDependenciesService.getPackagesToInspect = function (absoluteProjectDir, installedPlugins) {
|
|
103
|
-
var packages = new Map();
|
|
104
|
-
for (var _i = 0, installedPlugins_1 = installedPlugins; _i < installedPlugins_1.length; _i++) {
|
|
105
|
-
var plugin = installedPlugins_1[_i];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (missingPeers.length > 0) {
|
|
32
|
+
PeerDependenciesService.symlinkMissingPeers(absoluteProjectDir, missingPeers);
|
|
33
|
+
}
|
|
34
|
+
console.info(`Resolving peer dependencies done!`);
|
|
35
|
+
}
|
|
36
|
+
static getPackagePeerDependencies(packageDirPath) {
|
|
37
|
+
const packageJson = PackageJson_1.PackageJson.fromDirPath(packageDirPath);
|
|
38
|
+
const content = packageJson.getContent();
|
|
39
|
+
const peerDependencies = content.peerDependencies || {};
|
|
40
|
+
const peerDependenciesMeta = content.peerDependenciesMeta || {};
|
|
41
|
+
return Object.keys(peerDependencies).map((name) => ({
|
|
42
|
+
name,
|
|
43
|
+
optional: peerDependenciesMeta[name]?.optional || false,
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
static getPackagesToInspect(absoluteProjectDir, installedPlugins) {
|
|
47
|
+
const packages = new Map();
|
|
48
|
+
for (const plugin of installedPlugins) {
|
|
106
49
|
packages.set(plugin.fullname, {
|
|
107
50
|
name: plugin.fullname,
|
|
108
51
|
path: plugin.path,
|
|
109
52
|
});
|
|
110
|
-
|
|
111
|
-
for (
|
|
112
|
-
|
|
113
|
-
var dependencyPath = PeerDependenciesService.resolveDependencyPath(absoluteProjectDir, plugin.path, dependencyName);
|
|
53
|
+
const pluginDependencies = PackageJson_1.PackageJson.fromDirPath(plugin.path).getDependenciesPackageNames();
|
|
54
|
+
for (const dependencyName of pluginDependencies) {
|
|
55
|
+
const dependencyPath = PeerDependenciesService.resolveDependencyPath(absoluteProjectDir, plugin.path, dependencyName);
|
|
114
56
|
if (!dependencyPath) {
|
|
115
57
|
continue;
|
|
116
58
|
}
|
|
@@ -123,112 +65,105 @@ var PeerDependenciesService = /** @class */ (function () {
|
|
|
123
65
|
}
|
|
124
66
|
}
|
|
125
67
|
return Array.from(packages.values());
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
68
|
+
}
|
|
69
|
+
static resolveDependencyPath(absoluteProjectDir, pluginPath, dependencyName) {
|
|
70
|
+
const candidatePaths = [
|
|
129
71
|
(0, path_1.join)(absoluteProjectDir, PeerDependenciesService.DEPENDENCIES_FOLDER, dependencyName),
|
|
130
72
|
(0, path_1.join)(pluginPath, PeerDependenciesService.DEPENDENCIES_FOLDER, dependencyName),
|
|
131
73
|
];
|
|
132
|
-
for (
|
|
133
|
-
var candidatePath = candidatePaths_1[_i];
|
|
74
|
+
for (const candidatePath of candidatePaths) {
|
|
134
75
|
if ((0, fs_1.existsSync)((0, path_1.join)(candidatePath, "package.json"))) {
|
|
135
76
|
return candidatePath;
|
|
136
77
|
}
|
|
137
78
|
}
|
|
138
79
|
return undefined;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
80
|
+
}
|
|
81
|
+
static resolvePeerSourcePath(absoluteProjectDir, requiredByPath, peerName) {
|
|
82
|
+
const projectNodeModulesPath = (0, path_1.join)(absoluteProjectDir, PeerDependenciesService.DEPENDENCIES_FOLDER);
|
|
83
|
+
const directResolution = PeerDependenciesService.resolvePackagePathFrom(requiredByPath, peerName);
|
|
143
84
|
if (directResolution) {
|
|
144
85
|
return directResolution;
|
|
145
86
|
}
|
|
146
|
-
|
|
87
|
+
const projectResolution = PeerDependenciesService.resolvePackagePathFrom(projectNodeModulesPath, peerName);
|
|
147
88
|
if (projectResolution) {
|
|
148
89
|
return projectResolution;
|
|
149
90
|
}
|
|
150
|
-
|
|
91
|
+
const nestedResolution = PeerDependenciesService.resolveFromNestedNodeModules(projectNodeModulesPath, peerName);
|
|
151
92
|
if (nestedResolution) {
|
|
152
93
|
return nestedResolution;
|
|
153
94
|
}
|
|
154
95
|
return (0, path_1.join)(projectNodeModulesPath, peerName);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
for (
|
|
159
|
-
|
|
160
|
-
var resolvedPath = PeerDependenciesService.resolvePackagePathFrom(packageDir, peerName);
|
|
96
|
+
}
|
|
97
|
+
static resolveFromNestedNodeModules(projectNodeModulesPath, peerName) {
|
|
98
|
+
const packageDirs = PeerDependenciesService.getTopLevelPackageDirs(projectNodeModulesPath);
|
|
99
|
+
for (const packageDir of packageDirs) {
|
|
100
|
+
const resolvedPath = PeerDependenciesService.resolvePackagePathFrom(packageDir, peerName);
|
|
161
101
|
if (resolvedPath) {
|
|
162
102
|
return resolvedPath;
|
|
163
103
|
}
|
|
164
104
|
}
|
|
165
105
|
return undefined;
|
|
166
|
-
}
|
|
167
|
-
|
|
106
|
+
}
|
|
107
|
+
static getTopLevelPackageDirs(nodeModulesPath) {
|
|
168
108
|
if (!(0, fs_1.existsSync)(nodeModulesPath)) {
|
|
169
109
|
return [];
|
|
170
110
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
for (
|
|
174
|
-
|
|
175
|
-
var entryPath = (0, path_1.join)(nodeModulesPath, entry);
|
|
111
|
+
const packageDirs = [];
|
|
112
|
+
const entries = (0, fs_1.readdirSync)(nodeModulesPath);
|
|
113
|
+
for (const entry of entries) {
|
|
114
|
+
const entryPath = (0, path_1.join)(nodeModulesPath, entry);
|
|
176
115
|
if (!entry.startsWith("@")) {
|
|
177
116
|
packageDirs.push(entryPath);
|
|
178
117
|
continue;
|
|
179
118
|
}
|
|
180
|
-
|
|
181
|
-
for (
|
|
182
|
-
var scopedEntry = scopedEntries_1[_a];
|
|
119
|
+
const scopedEntries = (0, fs_1.readdirSync)(entryPath);
|
|
120
|
+
for (const scopedEntry of scopedEntries) {
|
|
183
121
|
packageDirs.push((0, path_1.join)(entryPath, scopedEntry));
|
|
184
122
|
}
|
|
185
123
|
}
|
|
186
124
|
return packageDirs;
|
|
187
|
-
}
|
|
188
|
-
|
|
125
|
+
}
|
|
126
|
+
static resolvePackagePathFrom(fromPath, packageName) {
|
|
189
127
|
try {
|
|
190
|
-
|
|
128
|
+
const packageJsonPath = require.resolve((0, path_1.join)(packageName, "package.json"), {
|
|
191
129
|
paths: [fromPath],
|
|
192
130
|
});
|
|
193
131
|
return (0, path_1.dirname)(packageJsonPath);
|
|
194
132
|
}
|
|
195
|
-
catch
|
|
133
|
+
catch {
|
|
196
134
|
return undefined;
|
|
197
135
|
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
|
|
136
|
+
}
|
|
137
|
+
static canResolveFromConsumerRoot(absoluteProjectDir, packageName) {
|
|
138
|
+
const packagePath = (0, path_1.join)(absoluteProjectDir, PeerDependenciesService.DEPENDENCIES_FOLDER, packageName);
|
|
201
139
|
return (0, fs_1.existsSync)(packagePath);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
for (
|
|
207
|
-
var peer = missingPeers_1[_i];
|
|
140
|
+
}
|
|
141
|
+
static symlinkMissingPeers(absoluteProjectDir, missingPeers) {
|
|
142
|
+
const projectDependencyPath = (0, path_1.join)(absoluteProjectDir, PeerDependenciesService.DEPENDENCIES_FOLDER);
|
|
143
|
+
const uniqueMissingPeers = new Map();
|
|
144
|
+
for (const peer of missingPeers) {
|
|
208
145
|
if (!uniqueMissingPeers.has(peer.name)) {
|
|
209
146
|
uniqueMissingPeers.set(peer.name, peer);
|
|
210
147
|
}
|
|
211
148
|
}
|
|
212
|
-
for (
|
|
213
|
-
|
|
214
|
-
var peerSourcePath = peer.sourcePath;
|
|
149
|
+
for (const peer of Array.from(uniqueMissingPeers.values())) {
|
|
150
|
+
const peerSourcePath = peer.sourcePath;
|
|
215
151
|
if (!(0, fs_1.existsSync)(peerSourcePath)) {
|
|
216
|
-
console.warn(
|
|
152
|
+
console.warn(`- Peer dependency "${peer.name}" required by "${peer.requiredBy}" not found in plugin node_modules`);
|
|
217
153
|
continue;
|
|
218
154
|
}
|
|
219
|
-
|
|
220
|
-
console.info(
|
|
155
|
+
const peerTargetPath = (0, path_1.join)(projectDependencyPath, peer.name);
|
|
156
|
+
console.info(`- Symlinking peer dependency "${peer.name}" required by "${peer.requiredBy}"`);
|
|
221
157
|
PeerDependenciesService.symlinkPeer(peerSourcePath, peerTargetPath);
|
|
222
158
|
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
|
|
159
|
+
}
|
|
160
|
+
static symlinkPeer(sourcePath, targetPath) {
|
|
161
|
+
const targetParentFolder = (0, path_1.join)(targetPath, "..");
|
|
226
162
|
if (!(0, fs_1.existsSync)(targetParentFolder)) {
|
|
227
163
|
(0, fs_1.mkdirSync)(targetParentFolder, { recursive: true });
|
|
228
164
|
}
|
|
229
165
|
(0, fs_1.symlinkSync)(sourcePath, targetPath);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return PeerDependenciesService;
|
|
233
|
-
}());
|
|
166
|
+
}
|
|
167
|
+
}
|
|
234
168
|
exports.PeerDependenciesService = PeerDependenciesService;
|
|
169
|
+
PeerDependenciesService.DEPENDENCIES_FOLDER = "node_modules";
|
|
@@ -1,58 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PluginService = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const CorePackageService_1 = require("./CorePackageService");
|
|
8
|
+
const PackageJson_1 = require("./PackageJson");
|
|
9
|
+
class PluginService {
|
|
10
|
+
static packageNameIsPlugin(packageName) {
|
|
11
|
+
return packageName.match(new RegExp(`^${constants_1.PACKAGE_BASE_NAME}/.*$`));
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
PluginService.getInstalledPlugins = function (absoluteProjectDir) {
|
|
16
|
-
var packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
|
|
17
|
-
var allDependenciesPackageNames = packageJson.getAllDependenciesPackageNames();
|
|
13
|
+
static getInstalledPlugins(absoluteProjectDir) {
|
|
14
|
+
const packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
|
|
15
|
+
const allDependenciesPackageNames = packageJson.getAllDependenciesPackageNames();
|
|
18
16
|
if (!allDependenciesPackageNames.length) {
|
|
19
17
|
return [];
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
var sortPlugins = function (pluginA, pluginB) { return pluginA.localeCompare(pluginB); };
|
|
19
|
+
const pluginsFullname = allDependenciesPackageNames.filter((packageName) => PluginService.packageNameIsPlugin(packageName));
|
|
20
|
+
const sortPlugins = (pluginA, pluginB) => pluginA.localeCompare(pluginB);
|
|
25
21
|
pluginsFullname.sort(sortPlugins);
|
|
26
|
-
|
|
27
|
-
for (
|
|
28
|
-
|
|
29
|
-
var plugin = PluginService.getPluginFromFullname(pluginFullname);
|
|
22
|
+
const plugins = new Map();
|
|
23
|
+
for (const pluginFullname of pluginsFullname) {
|
|
24
|
+
const plugin = PluginService.getPluginFromFullname(pluginFullname);
|
|
30
25
|
plugins.set(pluginFullname, plugin);
|
|
31
|
-
|
|
32
|
-
for (
|
|
33
|
-
var pluginParent = pluginParents_1[_a];
|
|
26
|
+
const pluginParents = PluginService.getInstalledPlugins(plugin.path);
|
|
27
|
+
for (const pluginParent of pluginParents) {
|
|
34
28
|
plugins.set(pluginParent.fullname, pluginParent);
|
|
35
29
|
}
|
|
36
30
|
}
|
|
37
31
|
return Array.from(plugins.values());
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
}
|
|
33
|
+
static getPluginShortname(fullname) {
|
|
34
|
+
const shortname = fullname.replace(`${constants_1.PACKAGE_BASE_NAME}/`, "");
|
|
41
35
|
return shortname;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
}
|
|
37
|
+
static getPluginFromFullname(fullname) {
|
|
38
|
+
const corePackageRootPath = CorePackageService_1.CorePackageService.getPackageRootPath();
|
|
39
|
+
const shortname = PluginService.getPluginShortname(fullname);
|
|
40
|
+
const path = (0, path_1.resolve)(corePackageRootPath, "../", shortname);
|
|
47
41
|
if (!(0, fs_1.existsSync)(path)) {
|
|
48
|
-
throw new Error(
|
|
42
|
+
throw new Error(`Plugin "${fullname}" is required but cannot be found in ${path}.`);
|
|
49
43
|
}
|
|
50
44
|
return {
|
|
51
|
-
fullname
|
|
52
|
-
shortname
|
|
53
|
-
path
|
|
45
|
+
fullname,
|
|
46
|
+
shortname,
|
|
47
|
+
path,
|
|
54
48
|
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
}());
|
|
49
|
+
}
|
|
50
|
+
}
|
|
58
51
|
exports.PluginService = PluginService;
|