@houssem__/xxxx 7.0.3
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/OPTIMIZATION_GUIDE.md +122 -0
- package/README.md +586 -0
- package/dist/common/fast-installer.d.ts +20 -0
- package/dist/common/fast-installer.d.ts.map +1 -0
- package/dist/common/fast-installer.js +141 -0
- package/dist/common/fast-installer.js.map +1 -0
- package/dist/common/sync-utils.d.ts +104 -0
- package/dist/common/sync-utils.d.ts.map +1 -0
- package/dist/common/sync-utils.js +614 -0
- package/dist/common/sync-utils.js.map +1 -0
- package/dist/dependencies/categories/libs-categories.d.ts +3 -0
- package/dist/dependencies/categories/libs-categories.d.ts.map +1 -0
- package/dist/dependencies/categories/libs-categories.js +318 -0
- package/dist/dependencies/categories/libs-categories.js.map +1 -0
- package/dist/dependencies/mfes-libs/index.d.ts +25 -0
- package/dist/dependencies/mfes-libs/index.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/index.js +88 -0
- package/dist/dependencies/mfes-libs/index.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-account.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-account.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-account.js +8 -0
- package/dist/dependencies/mfes-libs/mf-account.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-add-to-cart.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-add-to-cart.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-add-to-cart.js +8 -0
- package/dist/dependencies/mfes-libs/mf-add-to-cart.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-autocomplete.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-autocomplete.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-autocomplete.js +8 -0
- package/dist/dependencies/mfes-libs/mf-autocomplete.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-cms.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-cms.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-cms.js +8 -0
- package/dist/dependencies/mfes-libs/mf-cms.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-footer.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-footer.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-footer.js +8 -0
- package/dist/dependencies/mfes-libs/mf-footer.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-header.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-header.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-header.js +8 -0
- package/dist/dependencies/mfes-libs/mf-header.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-pdp.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-pdp.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-pdp.js +8 -0
- package/dist/dependencies/mfes-libs/mf-pdp.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-recommendation.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-recommendation.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-recommendation.js +8 -0
- package/dist/dependencies/mfes-libs/mf-recommendation.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-search.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-search.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-search.js +8 -0
- package/dist/dependencies/mfes-libs/mf-search.js.map +1 -0
- package/dist/dependencies/mfes-libs/mf-shell.d.ts +3 -0
- package/dist/dependencies/mfes-libs/mf-shell.d.ts.map +1 -0
- package/dist/dependencies/mfes-libs/mf-shell.js +46 -0
- package/dist/dependencies/mfes-libs/mf-shell.js.map +1 -0
- package/dist/dependencies/runtime-sync.d.ts +18 -0
- package/dist/dependencies/runtime-sync.d.ts.map +1 -0
- package/dist/dependencies/runtime-sync.js +105 -0
- package/dist/dependencies/runtime-sync.js.map +1 -0
- package/dist/dependencies/versions/mfes-versions.d.ts +3 -0
- package/dist/dependencies/versions/mfes-versions.d.ts.map +1 -0
- package/dist/dependencies/versions/mfes-versions.js +89 -0
- package/dist/dependencies/versions/mfes-versions.js.map +1 -0
- package/dist/dev-dependencies/categories/dev-libs-categories.d.ts +5 -0
- package/dist/dev-dependencies/categories/dev-libs-categories.d.ts.map +1 -0
- package/dist/dev-dependencies/categories/dev-libs-categories.js +400 -0
- package/dist/dev-dependencies/categories/dev-libs-categories.js.map +1 -0
- package/dist/dev-dependencies/dev-sync.d.ts +18 -0
- package/dist/dev-dependencies/dev-sync.d.ts.map +1 -0
- package/dist/dev-dependencies/dev-sync.js +104 -0
- package/dist/dev-dependencies/dev-sync.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/index.d.ts +24 -0
- package/dist/dev-dependencies/mfes-dev-libs/index.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/index.js +87 -0
- package/dist/dev-dependencies/mfes-dev-libs/index.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-account.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-account.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-account.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-account.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-add-to-cart.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-add-to-cart.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-add-to-cart.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-add-to-cart.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-autocomplete.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-autocomplete.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-autocomplete.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-autocomplete.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-cms.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-cms.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-cms.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-cms.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-footer.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-footer.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-footer.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-footer.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-header.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-header.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-header.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-header.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-pdp.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-pdp.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-pdp.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-pdp.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-recommendation.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-recommendation.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-recommendation.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-recommendation.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-search.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-search.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-search.js +5 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-search.js.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-shell.d.ts +3 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-shell.d.ts.map +1 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-shell.js +54 -0
- package/dist/dev-dependencies/mfes-dev-libs/mf-shell.js.map +1 -0
- package/dist/dev-dependencies/versions/dev-versions.d.ts +3 -0
- package/dist/dev-dependencies/versions/dev-versions.d.ts.map +1 -0
- package/dist/dev-dependencies/versions/dev-versions.js +111 -0
- package/dist/dev-dependencies/versions/dev-versions.js.map +1 -0
- package/dist/performance/perf.d.ts +7 -0
- package/dist/performance/perf.d.ts.map +1 -0
- package/dist/performance/perf.js +48 -0
- package/dist/performance/perf.js.map +1 -0
- package/dist/sync-all-deps.d.ts +7 -0
- package/dist/sync-all-deps.d.ts.map +1 -0
- package/dist/sync-all-deps.js +304 -0
- package/dist/sync-all-deps.js.map +1 -0
- package/dist/types/interfaces.d.ts +54 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/interfaces.js +4 -0
- package/dist/types/interfaces.js.map +1 -0
- package/dist/types/mfe-projects.d.ts +21 -0
- package/dist/types/mfe-projects.d.ts.map +1 -0
- package/dist/types/mfe-projects.js +47 -0
- package/dist/types/mfe-projects.js.map +1 -0
- package/package.json +27 -0
- package/test/package-lock.json +26690 -0
- package/test/package.json +125 -0
- package/todo.md +340 -0
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Common utilities for dependency synchronization
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.SyncUtils = void 0;
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const util_1 = require("util");
|
|
42
|
+
const fs = __importStar(require("fs/promises"));
|
|
43
|
+
const fsSync = __importStar(require("fs")); // Keep for existsSync only
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
46
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
47
|
+
class SyncUtils {
|
|
48
|
+
/**
|
|
49
|
+
* Create structured error with recovery information
|
|
50
|
+
*/
|
|
51
|
+
static createDependencyError(error, operation) {
|
|
52
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
53
|
+
const depError = new Error(errorMessage);
|
|
54
|
+
// Classify error type
|
|
55
|
+
if (errorMessage.includes('ENOTFOUND') || errorMessage.includes('network')) {
|
|
56
|
+
depError.code = 'NETWORK_ERROR';
|
|
57
|
+
depError.recoverable = true;
|
|
58
|
+
}
|
|
59
|
+
else if (errorMessage.includes('version') || errorMessage.includes('semver')) {
|
|
60
|
+
depError.code = 'INVALID_VERSION';
|
|
61
|
+
depError.recoverable = false;
|
|
62
|
+
}
|
|
63
|
+
else if (errorMessage.includes('not found') || errorMessage.includes('404')) {
|
|
64
|
+
depError.code = 'PACKAGE_NOT_FOUND';
|
|
65
|
+
depError.recoverable = false;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
depError.code = 'VALIDATION_FAILED';
|
|
69
|
+
depError.recoverable = true;
|
|
70
|
+
}
|
|
71
|
+
depError.timestamp = Date.now();
|
|
72
|
+
depError.packageName = SyncUtils.extractPackageName(errorMessage);
|
|
73
|
+
return depError;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Attempt recovery from failures
|
|
77
|
+
*/
|
|
78
|
+
static async attemptRecovery(error) {
|
|
79
|
+
console.log('🔄 Attempting recovery...');
|
|
80
|
+
switch (error.code) {
|
|
81
|
+
case 'NETWORK_ERROR':
|
|
82
|
+
console.log('📡 Checking network connectivity...');
|
|
83
|
+
await SyncUtils.checkNetworkConnectivity();
|
|
84
|
+
break;
|
|
85
|
+
case 'VALIDATION_FAILED':
|
|
86
|
+
console.log('🔍 Clearing npm cache...');
|
|
87
|
+
await SyncUtils.clearNpmCache();
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
console.log('🧹 Running general cleanup...');
|
|
91
|
+
await SyncUtils.generalCleanup();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Simple validation - just check if package.json exists
|
|
96
|
+
*/
|
|
97
|
+
static async validateDependencies() {
|
|
98
|
+
const issues = [];
|
|
99
|
+
try {
|
|
100
|
+
// Check package.json integrity
|
|
101
|
+
const packageJsonPath = path.resolve(process.cwd(), 'package.json');
|
|
102
|
+
try {
|
|
103
|
+
await fs.access(packageJsonPath);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
issues.push('package.json not found');
|
|
107
|
+
return { isValid: false, issues };
|
|
108
|
+
}
|
|
109
|
+
return { isValid: true, issues };
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
113
|
+
issues.push(`Validation error: ${errorMessage}`);
|
|
114
|
+
return { isValid: false, issues };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
static queueDependency(name, version, isDev) {
|
|
118
|
+
// Validate inputs - null/undefined/empty checks
|
|
119
|
+
if (!name || typeof name !== 'string' || name.trim() === '') {
|
|
120
|
+
console.warn('⚠️ Cannot queue dependency: invalid package name');
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (!version || typeof version !== 'string' || version.trim() === '') {
|
|
124
|
+
console.warn(`⚠️ Cannot queue dependency "${name}": invalid version`);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Sanitize inputs to prevent injection
|
|
128
|
+
try {
|
|
129
|
+
const sanitizedName = SyncUtils.sanitizePackageName(name);
|
|
130
|
+
const sanitizedVersion = SyncUtils.sanitizeVersion(version);
|
|
131
|
+
if (isDev) {
|
|
132
|
+
if (!SyncUtils.pendingDevDependencies.has(sanitizedName)) {
|
|
133
|
+
SyncUtils.pendingDevDependencies.set(sanitizedName, sanitizedVersion);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (!SyncUtils.pendingDependencies.has(sanitizedName)) {
|
|
138
|
+
SyncUtils.pendingDependencies.set(sanitizedName, sanitizedVersion);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
144
|
+
console.error(`❌ Failed to queue dependency "${name}@${version}": ${msg}`);
|
|
145
|
+
// Don't throw - log and skip this dependency
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
static async writeQueuedToPackageJson() {
|
|
149
|
+
const pkgPath = path.resolve(process.cwd(), 'package.json');
|
|
150
|
+
try {
|
|
151
|
+
await fs.access(pkgPath);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
throw new Error('package.json not found');
|
|
155
|
+
}
|
|
156
|
+
const raw = await fs.readFile(pkgPath, 'utf8');
|
|
157
|
+
const pkg = JSON.parse(raw);
|
|
158
|
+
pkg.dependencies = pkg.dependencies || {};
|
|
159
|
+
pkg.devDependencies = pkg.devDependencies || {};
|
|
160
|
+
for (const [name, version] of SyncUtils.pendingDependencies.entries()) {
|
|
161
|
+
pkg.dependencies[name] = version; // keep as given
|
|
162
|
+
}
|
|
163
|
+
for (const [name, version] of SyncUtils.pendingDevDependencies.entries()) {
|
|
164
|
+
pkg.devDependencies[name] = version;
|
|
165
|
+
}
|
|
166
|
+
await fs.writeFile(pkgPath, JSON.stringify(pkg, null, 2), 'utf8');
|
|
167
|
+
const counts = { runtime: SyncUtils.pendingDependencies.size, dev: SyncUtils.pendingDevDependencies.size };
|
|
168
|
+
console.log(`🗂️ Updated package.json with ${counts.runtime} runtime and ${counts.dev} dev dependencies.`);
|
|
169
|
+
return counts;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Optimize npm configuration for faster installations
|
|
173
|
+
*/
|
|
174
|
+
static async optimizeNpmConfig() {
|
|
175
|
+
console.log('⚡ Optimizing npm configuration for faster installs...');
|
|
176
|
+
try {
|
|
177
|
+
// Set npm configurations for performance (updated for current npm versions)
|
|
178
|
+
const optimizations = [
|
|
179
|
+
'npm config set progress false', // Disable progress bars
|
|
180
|
+
'npm config set audit false', // Skip audit during install
|
|
181
|
+
'npm config set fund false', // Skip funding messages
|
|
182
|
+
'npm config set prefer-offline true', // Use cache when possible
|
|
183
|
+
'npm config set maxsockets 15', // Increase concurrent downloads
|
|
184
|
+
'npm config set registry https://registry.npmjs.org/', // Ensure fast registry
|
|
185
|
+
'npm config set fetch-retries 3', // Retry failed downloads
|
|
186
|
+
'npm config set fetch-retry-mintimeout 10000', // Min retry timeout
|
|
187
|
+
'npm config set fetch-timeout 60000', // Increase fetch timeout
|
|
188
|
+
];
|
|
189
|
+
for (const cmd of optimizations) {
|
|
190
|
+
try {
|
|
191
|
+
await execAsync(cmd);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
// Log individual failures but continue
|
|
195
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
196
|
+
console.warn(`⚠️ Skipped config: ${cmd.split(' ')[3]} (${msg.split('\n')[0]})`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
console.log('✅ npm configuration optimized');
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
203
|
+
console.warn('⚠️ Could not optimize npm config:', msg);
|
|
204
|
+
// Continue - this is not critical
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Install with performance optimizations
|
|
209
|
+
*/
|
|
210
|
+
static async installQueuedOnce() {
|
|
211
|
+
if (SyncUtils.pendingDependencies.size === 0 && SyncUtils.pendingDevDependencies.size === 0) {
|
|
212
|
+
console.log('ℹ️ No dependencies queued for installation.');
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// Optimize npm before installation
|
|
216
|
+
await SyncUtils.optimizeNpmConfig();
|
|
217
|
+
console.log('📦 Running optimized npm install for all queued dependencies...');
|
|
218
|
+
try {
|
|
219
|
+
// Use faster npm install flags with legacy peer deps to handle Angular conflicts
|
|
220
|
+
const installCmd = 'npm install --no-audit --no-fund --prefer-offline --maxsockets=15 --legacy-peer-deps';
|
|
221
|
+
await execAsync(installCmd, {
|
|
222
|
+
timeout: 600000, // Increase to 10 minutes for large installs
|
|
223
|
+
maxBuffer: 1024 * 1024 * 20 // Increase buffer to 20MB
|
|
224
|
+
});
|
|
225
|
+
console.log('✅ Optimized install completed successfully.');
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
229
|
+
console.error('❌ Optimized install failed:', msg);
|
|
230
|
+
// Attempt recovery with cache refresh
|
|
231
|
+
console.log('🔄 Attempting recovery with cache refresh...');
|
|
232
|
+
try {
|
|
233
|
+
await execAsync('npm cache verify');
|
|
234
|
+
console.log('✅ Cache verified, retrying installation...');
|
|
235
|
+
// Retry with even more aggressive caching and legacy peer deps
|
|
236
|
+
await execAsync('npm install --no-audit --no-fund --prefer-offline --legacy-peer-deps', {
|
|
237
|
+
timeout: 600000,
|
|
238
|
+
maxBuffer: 1024 * 1024 * 20
|
|
239
|
+
});
|
|
240
|
+
console.log('✅ Installation succeeded on retry.');
|
|
241
|
+
}
|
|
242
|
+
catch (retryError) {
|
|
243
|
+
const retryMsg = retryError instanceof Error ? retryError.message : String(retryError);
|
|
244
|
+
console.error('❌ Recovery attempt failed:', retryMsg);
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
finally {
|
|
249
|
+
SyncUtils.pendingDependencies.clear();
|
|
250
|
+
SyncUtils.pendingDevDependencies.clear();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Batch dependencies for more efficient installation
|
|
255
|
+
*/
|
|
256
|
+
static async batchInstallDependencies() {
|
|
257
|
+
const runtimeDeps = Array.from(SyncUtils.pendingDependencies.entries());
|
|
258
|
+
const devDeps = Array.from(SyncUtils.pendingDevDependencies.entries());
|
|
259
|
+
if (runtimeDeps.length === 0 && devDeps.length === 0) {
|
|
260
|
+
console.log('ℹ️ No dependencies to batch install.');
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
console.log(`📦 Batch installing ${runtimeDeps.length} runtime + ${devDeps.length} dev dependencies...`);
|
|
264
|
+
try {
|
|
265
|
+
await SyncUtils.optimizeNpmConfig();
|
|
266
|
+
// Install all runtime dependencies at once
|
|
267
|
+
if (runtimeDeps.length > 0) {
|
|
268
|
+
const runtimePackages = runtimeDeps.map(([name, version]) => `${name}@${version}`);
|
|
269
|
+
const chunks = SyncUtils.chunkArray(runtimePackages, 10); // Install in chunks of 10
|
|
270
|
+
for (const chunk of chunks) {
|
|
271
|
+
const installCmd = `npm install ${chunk.join(' ')} --save --no-audit --no-fund --prefer-offline`;
|
|
272
|
+
console.log(`📦 Installing runtime chunk: ${chunk.length} packages...`);
|
|
273
|
+
await execAsync(installCmd, { timeout: 300000, maxBuffer: 1024 * 1024 * 15 });
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Install all dev dependencies at once
|
|
277
|
+
if (devDeps.length > 0) {
|
|
278
|
+
const devPackages = devDeps.map(([name, version]) => `${name}@${version}`);
|
|
279
|
+
const chunks = SyncUtils.chunkArray(devPackages, 10);
|
|
280
|
+
for (const chunk of chunks) {
|
|
281
|
+
const installCmd = `npm install ${chunk.join(' ')} --save-dev --no-audit --no-fund --prefer-offline`;
|
|
282
|
+
console.log(`🛠️ Installing dev chunk: ${chunk.length} packages...`);
|
|
283
|
+
await execAsync(installCmd, { timeout: 300000, maxBuffer: 1024 * 1024 * 15 });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
console.log('✅ Batch installation completed successfully.');
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
290
|
+
console.error('❌ Batch installation failed:', msg);
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
293
|
+
finally {
|
|
294
|
+
SyncUtils.pendingDependencies.clear();
|
|
295
|
+
SyncUtils.pendingDevDependencies.clear();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Super-fast chunked installation for large dependency sets (90+ packages)
|
|
300
|
+
*/
|
|
301
|
+
static async installQueuedFast() {
|
|
302
|
+
if (SyncUtils.pendingDependencies.size === 0 && SyncUtils.pendingDevDependencies.size === 0) {
|
|
303
|
+
console.log('ℹ️ No dependencies queued for installation.');
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const totalPackages = SyncUtils.pendingDependencies.size + SyncUtils.pendingDevDependencies.size;
|
|
307
|
+
console.log(`🚀 Fast chunked installation for ${totalPackages} packages...`);
|
|
308
|
+
// Pre-optimize npm configuration
|
|
309
|
+
await SyncUtils.optimizeNpmConfig();
|
|
310
|
+
try {
|
|
311
|
+
// Strategy: Install in smaller chunks to avoid timeout/memory issues
|
|
312
|
+
const chunkSize = 8; // Smaller chunks for reliability
|
|
313
|
+
let installedCount = 0;
|
|
314
|
+
// Process runtime dependencies in chunks
|
|
315
|
+
if (SyncUtils.pendingDependencies.size > 0) {
|
|
316
|
+
console.log(`📦 Installing ${SyncUtils.pendingDependencies.size} runtime dependencies in chunks...`);
|
|
317
|
+
const runtimeDeps = Array.from(SyncUtils.pendingDependencies.entries());
|
|
318
|
+
const runtimeChunks = SyncUtils.chunkArray(runtimeDeps, chunkSize);
|
|
319
|
+
for (let i = 0; i < runtimeChunks.length; i++) {
|
|
320
|
+
const chunk = runtimeChunks[i];
|
|
321
|
+
const packages = chunk.map(([name, version]) => `${name}@${version}`).join(' ');
|
|
322
|
+
console.log(` 📦 Chunk ${i + 1}/${runtimeChunks.length}: ${chunk.length} packages`);
|
|
323
|
+
const cmd = `npm install ${packages} --save --no-audit --no-fund --prefer-offline --legacy-peer-deps`;
|
|
324
|
+
await execAsync(cmd, {
|
|
325
|
+
timeout: 180000, // 3 minutes per chunk
|
|
326
|
+
maxBuffer: 1024 * 1024 * 10
|
|
327
|
+
});
|
|
328
|
+
installedCount += chunk.length;
|
|
329
|
+
console.log(` ✅ Installed ${installedCount}/${totalPackages} packages`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Process dev dependencies in chunks
|
|
333
|
+
if (SyncUtils.pendingDevDependencies.size > 0) {
|
|
334
|
+
console.log(`🛠️ Installing ${SyncUtils.pendingDevDependencies.size} dev dependencies in chunks...`);
|
|
335
|
+
const devDeps = Array.from(SyncUtils.pendingDevDependencies.entries());
|
|
336
|
+
const devChunks = SyncUtils.chunkArray(devDeps, chunkSize);
|
|
337
|
+
for (let i = 0; i < devChunks.length; i++) {
|
|
338
|
+
const chunk = devChunks[i];
|
|
339
|
+
const packages = chunk.map(([name, version]) => `${name}@${version}`).join(' ');
|
|
340
|
+
console.log(` 🛠️ Chunk ${i + 1}/${devChunks.length}: ${chunk.length} packages`);
|
|
341
|
+
const cmd = `npm install ${packages} --save-dev --no-audit --no-fund --prefer-offline --legacy-peer-deps`;
|
|
342
|
+
await execAsync(cmd, {
|
|
343
|
+
timeout: 180000, // 3 minutes per chunk
|
|
344
|
+
maxBuffer: 1024 * 1024 * 10
|
|
345
|
+
});
|
|
346
|
+
installedCount += chunk.length;
|
|
347
|
+
console.log(` ✅ Installed ${installedCount}/${totalPackages} packages`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
console.log(`🎉 Fast chunked installation completed! ${totalPackages} packages installed successfully.`);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
354
|
+
console.error('❌ Fast chunked installation failed:', msg);
|
|
355
|
+
// Fallback: try single install with more aggressive settings
|
|
356
|
+
console.log('🔄 Falling back to single install with aggressive caching...');
|
|
357
|
+
try {
|
|
358
|
+
const fallbackCmd = 'npm install --legacy-peer-deps --no-audit --no-fund --prefer-offline --force';
|
|
359
|
+
await execAsync(fallbackCmd, {
|
|
360
|
+
timeout: 900000, // 15 minutes for fallback
|
|
361
|
+
maxBuffer: 1024 * 1024 * 30
|
|
362
|
+
});
|
|
363
|
+
console.log('✅ Fallback installation succeeded.');
|
|
364
|
+
}
|
|
365
|
+
catch (fallbackError) {
|
|
366
|
+
const fallbackMsg = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
|
|
367
|
+
console.error('❌ Fallback installation also failed:', fallbackMsg);
|
|
368
|
+
throw error;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
finally {
|
|
372
|
+
SyncUtils.pendingDependencies.clear();
|
|
373
|
+
SyncUtils.pendingDevDependencies.clear();
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Split array into chunks for batch processing
|
|
378
|
+
*/
|
|
379
|
+
static chunkArray(array, size) {
|
|
380
|
+
const chunks = [];
|
|
381
|
+
for (let i = 0; i < array.length; i += size) {
|
|
382
|
+
chunks.push(array.slice(i, i + size));
|
|
383
|
+
}
|
|
384
|
+
return chunks;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Enhanced cache management
|
|
388
|
+
*/
|
|
389
|
+
static async optimizeCache() {
|
|
390
|
+
console.log('🗄️ Optimizing npm cache...');
|
|
391
|
+
try {
|
|
392
|
+
// Verify cache integrity
|
|
393
|
+
await execAsync('npm cache verify');
|
|
394
|
+
// Set optimal cache configuration
|
|
395
|
+
await execAsync('npm config set cache-min 86400'); // Cache for 24 hours
|
|
396
|
+
await execAsync('npm config set cache-max 604800000'); // Max 7 days
|
|
397
|
+
console.log('✅ Cache optimization completed');
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
401
|
+
console.warn('⚠️ Cache optimization failed:', msg);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
// Keep installPackage for backwards compatibility but redirect to queue
|
|
405
|
+
static async installPackage(packageName, version, isDev) {
|
|
406
|
+
SyncUtils.queueDependency(packageName, version, isDev);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Sync with retry logic
|
|
410
|
+
*/
|
|
411
|
+
static async syncWithRetry(operation, syncFunction, config) {
|
|
412
|
+
const startTime = perf_hooks_1.performance.now();
|
|
413
|
+
for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
|
|
414
|
+
try {
|
|
415
|
+
if (attempt > 0) {
|
|
416
|
+
const backoffTime = config.backoffMs * Math.pow(2, attempt - 1);
|
|
417
|
+
console.log(`⏳ Retry attempt ${attempt}/${config.maxRetries} after ${backoffTime}ms...`);
|
|
418
|
+
await SyncUtils.delay(backoffTime);
|
|
419
|
+
}
|
|
420
|
+
const result = await syncFunction();
|
|
421
|
+
return {
|
|
422
|
+
success: true,
|
|
423
|
+
operation,
|
|
424
|
+
duration: perf_hooks_1.performance.now() - startTime,
|
|
425
|
+
packagesSynced: result?.packageCount || 0
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
const depError = SyncUtils.createDependencyError(error, operation);
|
|
430
|
+
if (attempt === config.maxRetries || !depError.recoverable) {
|
|
431
|
+
console.error(`❌ Final attempt failed for ${operation}:`, depError.message);
|
|
432
|
+
// Attempt recovery if possible
|
|
433
|
+
if (depError.recoverable) {
|
|
434
|
+
await SyncUtils.attemptRecovery(depError);
|
|
435
|
+
}
|
|
436
|
+
return {
|
|
437
|
+
success: false,
|
|
438
|
+
operation,
|
|
439
|
+
duration: perf_hooks_1.performance.now() - startTime,
|
|
440
|
+
error: depError.message
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
console.warn(`⚠️ Attempt ${attempt + 1} failed: ${depError.message}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return {
|
|
447
|
+
success: false,
|
|
448
|
+
operation,
|
|
449
|
+
duration: perf_hooks_1.performance.now() - startTime,
|
|
450
|
+
error: 'Maximum retry attempts exceeded'
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
// Utility methods
|
|
454
|
+
static delay(ms) {
|
|
455
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
456
|
+
}
|
|
457
|
+
static extractPackageName(errorMessage) {
|
|
458
|
+
const match = errorMessage.match(/(?:package\s+)?['"]?([^'"@\s]+)/i);
|
|
459
|
+
return match?.[1];
|
|
460
|
+
}
|
|
461
|
+
static async checkNetworkConnectivity() {
|
|
462
|
+
try {
|
|
463
|
+
await execAsync('npm ping', { timeout: 5000 });
|
|
464
|
+
console.log('✅ Network connectivity confirmed');
|
|
465
|
+
}
|
|
466
|
+
catch (error) {
|
|
467
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
468
|
+
console.warn('⚠️ Network connectivity issues detected:', errorMessage);
|
|
469
|
+
throw new Error('Network connectivity failed');
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
static async clearNpmCache() {
|
|
473
|
+
try {
|
|
474
|
+
await execAsync('npm cache clean --force');
|
|
475
|
+
console.log('✅ NPM cache cleared');
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
479
|
+
console.warn('⚠️ Failed to clear NPM cache:', errorMessage);
|
|
480
|
+
// Don't throw - this is a recovery operation
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
static async generalCleanup() {
|
|
484
|
+
const errors = [];
|
|
485
|
+
try {
|
|
486
|
+
// Remove node_modules with error boundary
|
|
487
|
+
if (fsSync.existsSync('node_modules')) {
|
|
488
|
+
try {
|
|
489
|
+
await execAsync('rm -rf node_modules');
|
|
490
|
+
console.log('✅ Removed node_modules directory');
|
|
491
|
+
}
|
|
492
|
+
catch (error) {
|
|
493
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
494
|
+
errors.push(`Failed to remove node_modules: ${msg}`);
|
|
495
|
+
console.warn('⚠️ Could not remove node_modules:', msg);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
// Remove package-lock.json with error boundary
|
|
499
|
+
if (fsSync.existsSync('package-lock.json')) {
|
|
500
|
+
try {
|
|
501
|
+
await fs.unlink('package-lock.json');
|
|
502
|
+
console.log('✅ Removed package-lock.json');
|
|
503
|
+
}
|
|
504
|
+
catch (error) {
|
|
505
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
506
|
+
errors.push(`Failed to remove package-lock.json: ${msg}`);
|
|
507
|
+
console.warn('⚠️ Could not remove package-lock.json:', msg);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
if (errors.length === 0) {
|
|
511
|
+
console.log('✅ Cleanup completed successfully');
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
console.warn(`⚠️ Cleanup completed with ${errors.length} error(s)`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
catch (error) {
|
|
518
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
519
|
+
console.warn('⚠️ Cleanup failed:', errorMessage);
|
|
520
|
+
// Don't throw - this is a recovery operation
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
static isValidPackageInfo(info) {
|
|
524
|
+
return !!(info.name && info.version && /^\d+\.\d+\.\d+/.test(info.version));
|
|
525
|
+
}
|
|
526
|
+
static isValidMFEProject(projectName) {
|
|
527
|
+
// Use centralized registry instead of hardcoded list
|
|
528
|
+
const { isValidMFEProject } = require('../types/mfe-projects');
|
|
529
|
+
return isValidMFEProject(projectName);
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Sanitize and validate environment variable input
|
|
533
|
+
*/
|
|
534
|
+
static sanitizeEnvironment(env) {
|
|
535
|
+
if (!env || typeof env !== 'string') {
|
|
536
|
+
return 'development';
|
|
537
|
+
}
|
|
538
|
+
// Whitelist of allowed environment values
|
|
539
|
+
const allowedEnvironments = ['development', 'production', 'test'];
|
|
540
|
+
const sanitized = env.trim().toLowerCase();
|
|
541
|
+
if (allowedEnvironments.includes(sanitized)) {
|
|
542
|
+
return sanitized;
|
|
543
|
+
}
|
|
544
|
+
console.warn(`⚠️ Invalid NODE_ENV value: "${env}". Defaulting to "development"`);
|
|
545
|
+
return 'development';
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Sanitize command-line argument to prevent injection
|
|
549
|
+
* Removes dangerous characters that could be used for command injection
|
|
550
|
+
*/
|
|
551
|
+
static sanitizeArgument(arg) {
|
|
552
|
+
if (!arg || typeof arg !== 'string') {
|
|
553
|
+
return '';
|
|
554
|
+
}
|
|
555
|
+
// Remove potentially dangerous characters
|
|
556
|
+
// Allow only: alphanumeric, hyphens, underscores, dots
|
|
557
|
+
const sanitized = arg
|
|
558
|
+
.trim()
|
|
559
|
+
.replace(/[^a-zA-Z0-9\-_.]/g, ''); // Remove anything not alphanumeric, -, _, .
|
|
560
|
+
if (sanitized !== arg.trim()) {
|
|
561
|
+
console.warn(`⚠️ Sanitized argument: "${arg}" → "${sanitized}"`);
|
|
562
|
+
}
|
|
563
|
+
return sanitized;
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Sanitize package name to prevent injection in npm commands
|
|
567
|
+
*/
|
|
568
|
+
static sanitizePackageName(packageName) {
|
|
569
|
+
if (!packageName || typeof packageName !== 'string') {
|
|
570
|
+
throw new Error('Invalid package name: must be a non-empty string');
|
|
571
|
+
}
|
|
572
|
+
// npm package names can contain: lowercase, numbers, hyphens, dots, underscores, @, /
|
|
573
|
+
// See: https://docs.npmjs.com/cli/v7/configuring-npm/package-json#name
|
|
574
|
+
const sanitized = packageName.trim();
|
|
575
|
+
// Validate npm package name format
|
|
576
|
+
const validPackageNameRegex = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
577
|
+
if (!validPackageNameRegex.test(sanitized)) {
|
|
578
|
+
throw new Error(`Invalid package name format: "${packageName}". Must follow npm naming conventions.`);
|
|
579
|
+
}
|
|
580
|
+
// Additional security: prevent shell metacharacters
|
|
581
|
+
const dangerousChars = /[;&|`$(){}[\]<>\\'"]/;
|
|
582
|
+
if (dangerousChars.test(sanitized)) {
|
|
583
|
+
throw new Error(`Package name contains dangerous characters: "${packageName}"`);
|
|
584
|
+
}
|
|
585
|
+
return sanitized;
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Sanitize version string to prevent injection
|
|
589
|
+
*/
|
|
590
|
+
static sanitizeVersion(version) {
|
|
591
|
+
if (!version || typeof version !== 'string') {
|
|
592
|
+
throw new Error('Invalid version: must be a non-empty string');
|
|
593
|
+
}
|
|
594
|
+
const sanitized = version.trim();
|
|
595
|
+
// Valid semver patterns: 1.2.3, ^1.2.3, ~1.2.3, >=1.2.3, etc.
|
|
596
|
+
const validVersionRegex = /^[~^>=<*]?\d+(\.\d+){0,2}(\.\*)?(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
|
|
597
|
+
if (!validVersionRegex.test(sanitized)) {
|
|
598
|
+
throw new Error(`Invalid version format: "${version}". Must be valid semver.`);
|
|
599
|
+
}
|
|
600
|
+
// Prevent shell metacharacters
|
|
601
|
+
const dangerousChars = /[;&|`$(){}[\]<>\\'"]/;
|
|
602
|
+
if (dangerousChars.test(sanitized)) {
|
|
603
|
+
throw new Error(`Version contains dangerous characters: "${version}"`);
|
|
604
|
+
}
|
|
605
|
+
return sanitized;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
exports.SyncUtils = SyncUtils;
|
|
609
|
+
/**
|
|
610
|
+
* Install a package with proper error handling
|
|
611
|
+
*/
|
|
612
|
+
SyncUtils.pendingDependencies = new Map();
|
|
613
|
+
SyncUtils.pendingDevDependencies = new Map();
|
|
614
|
+
//# sourceMappingURL=sync-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-utils.js","sourceRoot":"","sources":["../../src/common/sync-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs-categories.d.ts","sourceRoot":"","sources":["../../../src/dependencies/categories/libs-categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,IAAI,EAAE,eAoUlB,CAAC"}
|