Skip to content

Commit 95c2b1b

Browse files
beemanjuristr
andauthored
feat(nest): update NestJS version to 7.0.0 (#2921)
Co-authored-by: Juri <juri.strumpflohner@gmail.com>
1 parent 40f9180 commit 95c2b1b

File tree

6 files changed

+205
-127
lines changed

6 files changed

+205
-127
lines changed

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@
5050
"@bazel/bazel": "^1.2.0",
5151
"@bazel/ibazel": "^0.10.3",
5252
"@cypress/webpack-preprocessor": "^4.1.2",
53-
"@nestjs/common": "^6.2.4",
54-
"@nestjs/core": "^6.2.4",
55-
"@nestjs/platform-express": "^6.2.4",
56-
"@nestjs/schematics": "^6.3.0",
57-
"@nestjs/testing": "^6.2.4",
53+
"@nestjs/common": "^7.0.0",
54+
"@nestjs/core": "^7.0.0",
55+
"@nestjs/platform-express": "^7.0.0",
56+
"@nestjs/schematics": "^7.0.0",
57+
"@nestjs/testing": "^7.0.0",
5858
"@ngrx/effects": "9.1.0",
5959
"@ngrx/entity": "9.1.0",
6060
"@ngrx/router-store": "9.1.0",
@@ -254,4 +254,4 @@
254254
"dependencies": {
255255
"@nrwl/nx-cloud": "^9.3.2"
256256
}
257-
}
257+
}

packages/nest/migrations.json

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
"version": "8.7.0-beta.1",
55
"description": "Update Nest.js libraries",
66
"factory": "./src/migrations/update-8-7-0/update-8-7-0"
7+
},
8+
"update-10-0-0": {
9+
"version": "10.0.0-beta.1",
10+
"description": "Update Nest.js libraries",
11+
"factory": "./src/migrations/update-10-0-0/update-10-0-0"
712
}
813
},
914
"packageJsonUpdates": {
1015
"8.7.0": {
11-
"version": "8.7.0-beta.4",
16+
"version": "8.7.0-beta.1",
1217
"packages": {
1318
"@nestjs/common": {
1419
"version": "^6.8.3",
@@ -35,6 +40,35 @@
3540
"alwaysAddToPackageJson": false
3641
}
3742
}
43+
},
44+
"10.0.0": {
45+
"version": "10.0.0-beta.1",
46+
"packages": {
47+
"@nestjs/common": {
48+
"version": "^7.0.0",
49+
"alwaysAddToPackageJson": false
50+
},
51+
"@nestjs/core": {
52+
"version": "^7.0.0",
53+
"alwaysAddToPackageJson": false
54+
},
55+
"@nestjs/platform-express": {
56+
"version": "^7.0.0",
57+
"alwaysAddToPackageJson": false
58+
},
59+
"@nestjs/schematics": {
60+
"version": "^7.0.0",
61+
"alwaysAddToPackageJson": false
62+
},
63+
"@nestjs/testing": {
64+
"version": "^7.0.0",
65+
"alwaysAddToPackageJson": false
66+
},
67+
"rxjs": {
68+
"version": "^6.5.4",
69+
"alwaysAddToPackageJson": true
70+
}
71+
}
3872
}
3973
}
4074
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import {
2+
chain,
3+
Rule,
4+
SchematicContext,
5+
Tree,
6+
} from '@angular-devkit/schematics';
7+
import {
8+
formatFiles,
9+
insert,
10+
updateJsonInTree,
11+
updatePackagesInPackageJson,
12+
} from '@nrwl/workspace';
13+
import { ReplaceChange } from '@nrwl/workspace/src/utils/ast-utils';
14+
import { join, relative } from 'path';
15+
import {
16+
createSourceFile,
17+
isDecorator,
18+
isImportClause,
19+
isImportDeclaration,
20+
isStringLiteral,
21+
ScriptTarget,
22+
} from 'typescript';
23+
import { getLogger } from '@nrwl/tao/src/shared/logger';
24+
const ignore = require('ignore');
25+
26+
export default function update(): Rule {
27+
return chain([
28+
updatePackagesInPackageJson(
29+
join(__dirname, '../../../', 'migrations.json'),
30+
'10.0.0'
31+
),
32+
formatFiles(),
33+
updateImports,
34+
removeObsoletePackages,
35+
(_, context: SchematicContext) => {
36+
const logger = getLogger();
37+
logger.info(
38+
'NX We upgraded Nest.js to v7. Make sure to read the migration guide: https://docs.nestjs.com/migration-guide'
39+
);
40+
},
41+
]);
42+
}
43+
44+
function removeObsoletePackages() {
45+
return updateJsonInTree('package.json', (json) => {
46+
if (json.dependencies && json.dependencies['type-graphql']) {
47+
delete json.dependencies['type-graphql'];
48+
}
49+
return json;
50+
});
51+
}
52+
53+
function updateImports(host: Tree) {
54+
let ig = ignore();
55+
56+
if (host.exists('.gitignore')) {
57+
ig = ig.add(host.read('.gitignore').toString());
58+
}
59+
60+
host.visit((path) => {
61+
if (ig.ignores(relative('/', path)) || !/\.ts?$/.test(path)) {
62+
return;
63+
}
64+
65+
const sourceFile = createSourceFile(
66+
path,
67+
host.read(path).toString(),
68+
ScriptTarget.Latest,
69+
true
70+
);
71+
const changes = [];
72+
sourceFile.statements.forEach((statement) => {
73+
if (
74+
isImportDeclaration(statement) &&
75+
isStringLiteral(statement.moduleSpecifier)
76+
) {
77+
const nodeText = statement.moduleSpecifier.getText(sourceFile);
78+
const modulePath = statement.moduleSpecifier
79+
.getText(sourceFile)
80+
.substr(1, nodeText.length - 2);
81+
if (modulePath === 'type-graphql') {
82+
changes.push(
83+
new ReplaceChange(
84+
path,
85+
statement.moduleSpecifier.getStart(sourceFile),
86+
nodeText,
87+
`'@nestjs/graphql'`
88+
)
89+
);
90+
}
91+
}
92+
});
93+
insert(host, path, changes);
94+
});
95+
}

packages/nest/src/schematics/init/init.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
nestJsVersion,
1313
nxVersion,
1414
reflectMetadataVersion,
15+
rxjsVersion,
1516
} from '../../utils/versions';
1617

1718
export const updateDependencies = addDepsToPackageJson(
@@ -20,6 +21,7 @@ export const updateDependencies = addDepsToPackageJson(
2021
'@nestjs/core': nestJsVersion,
2122
'@nestjs/platform-express': nestJsVersion,
2223
'reflect-metadata': reflectMetadataVersion,
24+
rxjs: rxjsVersion,
2325
},
2426
{
2527
'@nestjs/schematics': nestJsSchematicsVersion,
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
export const nxVersion = '*';
22

3-
export const nestJsVersion = '^6.8.3';
4-
export const nestJsSchematicsVersion = '^6.7.0';
3+
export const nestJsVersion = '^7.0.0';
4+
export const nestJsSchematicsVersion = '^7.0.0';
5+
6+
export const rxjsVersion = '^6.5.4';
57

68
export const reflectMetadataVersion = '^0.1.13';

0 commit comments

Comments
 (0)