Skip to content

Commit 223ff89

Browse files
kyliauKeen Yee Liau
authored andcommitted
refactor: move version resolver to common
Move the version resolver to `common` directory so that it can be shared with client code.
1 parent 2585e03 commit 223ff89

File tree

10 files changed

+98
-78
lines changed

10 files changed

+98
-78
lines changed

client/src/client.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import * as lsp from 'vscode-languageclient/node';
1414
import {ProjectLoadingFinish, ProjectLoadingStart, SuggestStrictMode, SuggestStrictModeParams} from '../common/notifications';
1515
import {NgccProgress, NgccProgressToken, NgccProgressType} from '../common/progress';
1616
import {GetComponentsWithTemplateFile, GetTcbRequest, IsInAngularProject} from '../common/requests';
17-
import {resolve, Version} from '../common/resolver';
1817

1918
import {isInsideComponentDecorator, isInsideInlineTemplateRegion} from './embedded_support';
2019
import {ProgressReporter} from './progress-reporter';
@@ -315,8 +314,7 @@ function registerProgressHandlers(client: lsp.LanguageClient) {
315314
client.onProgress(NgccProgressType, NgccProgressToken, async (params: NgccProgress) => {
316315
const {configFilePath} = params;
317316
if (!progressReporters.has(configFilePath)) {
318-
const reporter = new ProgressReporter();
319-
progressReporters.set(configFilePath, reporter);
317+
progressReporters.set(configFilePath, new ProgressReporter());
320318
}
321319
const reporter = progressReporters.get(configFilePath)!;
322320
if (params.done) {
@@ -390,8 +388,7 @@ function constructArgs(ctx: vscode.ExtensionContext): string[] {
390388
const ngProbeLocations = getProbeLocations(ngdk, ctx.extensionPath);
391389
args.push('--ngProbeLocations', ngProbeLocations.join(','));
392390

393-
console.error(vscode.workspace.workspaceFolders);
394-
const viewEngine: boolean = config.get('angular.view-engine', !allProjectsSupportIvy());
391+
const viewEngine: boolean = config.get('angular.view-engine', false);
395392
if (viewEngine) {
396393
args.push('--viewEngine');
397394
}
@@ -435,15 +432,4 @@ function getServerOptions(ctx: vscode.ExtensionContext, debug: boolean): lsp.Nod
435432
execArgv: debug ? devExecArgv : prodExecArgv,
436433
},
437434
};
438-
}
439-
440-
function allProjectsSupportIvy() {
441-
const workspaceFolders = vscode.workspace.workspaceFolders || [];
442-
for (const workspaceFolder of workspaceFolders) {
443-
const angularCore = resolve('@angular/core', workspaceFolder.uri.fsPath);
444-
if (angularCore?.version.greaterThanOrEqual(new Version('9')) === false) {
445-
return false;
446-
}
447-
}
448-
return true;
449435
}

client/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
}
1616
],
1717
"include": [
18-
"src"
18+
"src/*.ts"
1919
],
2020
"exclude": [
2121
"node_modules"

common/tests/resolver_spec.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import {Version} from '../resolver';
10+
11+
describe('Version', () => {
12+
it('should parse version string correctly', () => {
13+
const cases: Array<[string, number, number, number]> = [
14+
// version string | major | minor | patch
15+
['1', 1, 0, 0],
16+
['1.2', 1, 2, 0],
17+
['1.2.3', 1, 2, 3],
18+
['9.0.0-rc.1+126.sha-0c38aae.with-local-changes', 9, 0, 0],
19+
];
20+
for (const [versionStr, major, minor, patch] of cases) {
21+
const v = new Version(versionStr);
22+
expect(v.major).toBe(major);
23+
expect(v.minor).toBe(minor);
24+
expect(v.patch).toBe(patch);
25+
}
26+
});
27+
28+
it('should compare versions correctly', () => {
29+
const cases: Array<[string, string, boolean]> = [
30+
// lhs | rhs | result
31+
['1', '1', true],
32+
['1', '2', false],
33+
['2', '2.0', true],
34+
['2', '2.1', false],
35+
['2', '2.0.0', true],
36+
['2', '2.0.1', false],
37+
38+
['1.2', '1', true],
39+
['1.2', '2', false],
40+
['2.2', '2.1', true],
41+
['2.2', '2.7', false],
42+
['3.2', '3.2.0', true],
43+
['3.2', '3.2.1', false],
44+
45+
['1.2.3', '1', true],
46+
['1.2.3', '2', false],
47+
['2.2.3', '2.1', true],
48+
['2.2.3', '2.3', false],
49+
['3.2.3', '3.2.2', true],
50+
['3.2.3', '3.2.4', false],
51+
];
52+
for (const [s1, s2, result] of cases) {
53+
const v1 = new Version(s1);
54+
const v2 = new Version(s2);
55+
expect(v1.greaterThanOrEqual(v2)).toBe(result, `Expect ${v1} >= ${v2}`);
56+
}
57+
});
58+
});

common/tests/tsconfig.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"extends": "../../tsconfig.json",
3+
"compilerOptions": {
4+
"outDir": "../../dist/common/tests",
5+
},
6+
"references": [
7+
{ "path": "../tsconfig.json" }
8+
],
9+
"include": ["*.ts"]
10+
}

jasmine.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"spec_dir": "dist",
33
"spec_files": [
44
"client/tests/*_spec.js",
5+
"common/tests/*_spec.js",
56
"server/tests/*_spec.js"
67
]
7-
}
8+
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@
152152
],
153153
"main": "./dist/client/extension",
154154
"scripts": {
155-
"compile": "tsc -p server/banner.tsconfig.json && tsc -b && node esbuild.js",
156-
"compile:test": "tsc -b server/src/tests && tsc -b client/src/tests",
155+
"compile": "tsc -b server/banner.tsconfig.json && tsc -b && node esbuild.js",
156+
"compile:test": "tsc -b test.tsconfig.json",
157157
"compile:integration": "tsc -b integration",
158158
"compile:syntaxes-test": "tsc -b syntaxes/test",
159159
"build:syntaxes": "tsc -b syntaxes && node dist/syntaxes/build.js",

server/banner.tsconfig.json

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
{
2+
"extends": "../tsconfig.json",
23
"compilerOptions": {
3-
"target": "es2015",
4-
"module": "es2015",
5-
"moduleResolution": "node",
6-
"sourceMap": false,
7-
"strict": true,
8-
"outDir": "../dist/banner"
4+
"outDir": "../dist/banner",
5+
"rootDir": "src",
6+
"rootDirs": [".", "../dist"]
97
},
8+
"references": [
9+
{"path": "../common"}
10+
],
1011
"files": [
11-
"src/banner.ts"
12+
"src/banner.ts",
13+
"src/cmdline_utils.ts",
14+
"src/version_provider.ts"
1215
]
1316
}

server/src/ngcc.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99
import {fork} from 'child_process';
1010
import {dirname, resolve} from 'path';
11-
import {resolveNgcc, Version} from './version_provider';
11+
12+
import {Version} from '../common/resolver';
13+
14+
import {resolveNgcc} from './version_provider';
1215

1316
interface Progress {
1417
report(msg: string): void;

server/src/tests/version_provider_spec.ts

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import {isAbsolute, resolve} from 'path';
1010

11-
import {resolveNgLangSvc, resolveTsServer, Version} from '../version_provider';
11+
import {resolveNgLangSvc, resolveTsServer} from '../version_provider';
1212

1313
describe('Node Module Resolver', () => {
1414
const probeLocations = [__dirname];
@@ -33,52 +33,3 @@ describe('Node Module Resolver', () => {
3333
expect(result.resolvedPath.endsWith('@angular/language-service/index.js')).toBeTrue();
3434
});
3535
});
36-
37-
describe('Version', () => {
38-
it('should parse version string correctly', () => {
39-
const cases: Array<[string, number, number, number]> = [
40-
// version string | major | minor | patch
41-
['1', 1, 0, 0],
42-
['1.2', 1, 2, 0],
43-
['1.2.3', 1, 2, 3],
44-
['9.0.0-rc.1+126.sha-0c38aae.with-local-changes', 9, 0, 0],
45-
];
46-
for (const [versionStr, major, minor, patch] of cases) {
47-
const v = new Version(versionStr);
48-
expect(v.major).toBe(major);
49-
expect(v.minor).toBe(minor);
50-
expect(v.patch).toBe(patch);
51-
}
52-
});
53-
54-
it('should compare versions correctly', () => {
55-
const cases: Array<[string, string, boolean]> = [
56-
// lhs | rhs | result
57-
['1', '1', true],
58-
['1', '2', false],
59-
['2', '2.0', true],
60-
['2', '2.1', false],
61-
['2', '2.0.0', true],
62-
['2', '2.0.1', false],
63-
64-
['1.2', '1', true],
65-
['1.2', '2', false],
66-
['2.2', '2.1', true],
67-
['2.2', '2.7', false],
68-
['3.2', '3.2.0', true],
69-
['3.2', '3.2.1', false],
70-
71-
['1.2.3', '1', true],
72-
['1.2.3', '2', false],
73-
['2.2.3', '2.1', true],
74-
['2.2.3', '2.3', false],
75-
['3.2.3', '3.2.2', true],
76-
['3.2.3', '3.2.4', false],
77-
];
78-
for (const [s1, s2, result] of cases) {
79-
const v1 = new Version(s1);
80-
const v2 = new Version(s2);
81-
expect(v1.greaterThanOrEqual(v2)).toBe(result, `Expect ${v1} >= ${v2}`);
82-
}
83-
});
84-
});

test.tsconfig.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"references": [
4+
{"path": "./client/src/tests"},
5+
{"path": "./server/src/tests"},
6+
{"path": "./common/tests"}
7+
]
8+
}

0 commit comments

Comments
 (0)