ng-upgrade-orchestrator
Version:
Enterprise-grade Angular Multi-Version Upgrade Orchestrator with automatic npm installation, comprehensive dependency management, and seamless integration of all 9 official Angular migrations. Safely migrate Angular applications across multiple major vers
242 lines • 14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DependencyCompatibilityMatrix = void 0;
class DependencyCompatibilityMatrix {
/**
* Get compatible third-party dependencies for Angular version
*/
static getCompatibleDependencies(angularVersion) {
const versionMap = {
'12': [
// Angular Material & CDK
{ name: '@angular/material', version: '^12.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^12.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^12.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^12.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^12.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^12.0.0', type: 'dependencies' },
// Angular Flex Layout
{ name: '@angular/flex-layout', version: '^12.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^12.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^4.1.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^10.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^12.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^12.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.1.0', type: 'dependencies' }
],
'13': [
// Angular Material & CDK
{ name: '@angular/material', version: '^13.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^13.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^13.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^13.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^13.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^13.0.0', type: 'dependencies' },
// Angular Flex Layout
{ name: '@angular/flex-layout', version: '^13.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^13.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^5.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^11.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^13.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^13.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.4.0', type: 'dependencies' }
],
'14': [
// Angular Material & CDK
{ name: '@angular/material', version: '^14.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^14.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^14.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^14.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^14.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^14.0.0', type: 'dependencies' },
// Angular Flex Layout (deprecated - migrate to CSS Grid/Flexbox)
{ name: '@angular/flex-layout', version: '^14.0.0', type: 'dependencies', notes: 'Consider migrating to CSS Grid/Flexbox' },
// PrimeNG
{ name: 'primeng', version: '^14.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^5.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^12.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^14.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^14.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.5.0', type: 'dependencies' }
],
'15': [
// Angular Material & CDK
{ name: '@angular/material', version: '^15.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^15.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^15.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^15.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^15.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^15.0.0', type: 'dependencies' },
// Angular Flex Layout (deprecated)
{ name: '@angular/flex-layout', version: '^15.0.0', type: 'dependencies', notes: 'Deprecated - migrate to CSS Grid/Flexbox' },
// PrimeNG
{ name: 'primeng', version: '^15.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^6.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^14.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^15.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^15.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.5.0', type: 'dependencies' }
],
'16': [
// Angular Material & CDK
{ name: '@angular/material', version: '^16.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^16.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^16.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^16.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^16.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^16.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^16.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^6.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^15.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^16.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^16.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.8.0', type: 'dependencies' }
],
'17': [
// Angular Material & CDK
{ name: '@angular/material', version: '^17.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^17.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^17.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^17.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^17.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^17.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^17.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^6.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^16.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^17.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^17.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.8.0', type: 'dependencies' }
],
'18': [
// Angular Material & CDK
{ name: '@angular/material', version: '^18.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^18.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^18.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^18.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^18.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^18.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^18.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^7.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^17.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^18.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^18.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.8.0', type: 'dependencies' }
],
'19': [
// Angular Material & CDK
{ name: '@angular/material', version: '^19.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^19.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^19.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^19.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^19.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^19.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^19.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^7.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^18.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^19.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^19.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.8.0', type: 'dependencies' }
],
'20': [
// Angular Material & CDK
{ name: '@angular/material', version: '^20.0.0', type: 'dependencies' },
{ name: '@angular/cdk', version: '^20.0.0', type: 'dependencies' },
// NgRx
{ name: '@ngrx/store', version: '^20.0.0', type: 'dependencies' },
{ name: '@ngrx/effects', version: '^20.0.0', type: 'dependencies' },
{ name: '@ngrx/entity', version: '^20.0.0', type: 'dependencies' },
{ name: '@ngrx/router-store', version: '^20.0.0', type: 'dependencies' },
// PrimeNG
{ name: 'primeng', version: '^20.0.0', type: 'dependencies' },
{ name: 'primeicons', version: '^7.0.0', type: 'dependencies' },
// ng-bootstrap
{ name: '@ng-bootstrap/ng-bootstrap', version: '^19.0.0', type: 'dependencies' },
// Angular PWA
{ name: '@angular/service-worker', version: '^20.0.0', type: 'dependencies' },
// Testing
{ name: '@angular/cdk/testing', version: '^20.0.0', type: 'devDependencies' },
// RxJS
{ name: 'rxjs', version: '~7.8.0', type: 'dependencies' }
]
};
return versionMap[angularVersion] || [];
}
/**
* Check if a package should be removed for a specific Angular version
*/
static getDeprecatedPackages(angularVersion) {
const deprecatedMap = {
'15': ['@angular/flex-layout'], // Deprecated in Angular 15
'16': [],
'17': [],
'18': [],
'19': [],
'20': []
};
return deprecatedMap[angularVersion] || [];
}
/**
* Get migration notes for specific packages
*/
static getMigrationNotes(packageName, angularVersion) {
const migrationNotes = {
'@angular/flex-layout': {
'15': 'Angular Flex Layout is deprecated. Consider migrating to CSS Grid and Flexbox.',
'16': 'Angular Flex Layout is deprecated. Migrate to modern CSS layout solutions.',
'17': 'Angular Flex Layout is no longer maintained. Use CSS Grid and Flexbox instead.',
'18': 'Angular Flex Layout is no longer maintained. Use CSS Grid and Flexbox instead.',
'19': 'Angular Flex Layout is no longer maintained. Use CSS Grid and Flexbox instead.',
'20': 'Angular Flex Layout is no longer maintained. Use CSS Grid and Flexbox instead.'
}
};
return migrationNotes[packageName]?.[angularVersion];
}
}
exports.DependencyCompatibilityMatrix = DependencyCompatibilityMatrix;
//# sourceMappingURL=DependencyCompatibilityMatrix.js.map