Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7397fb1

Browse filesBrowse files
Fix lint and test errors and add tests
1 parent d34b865 commit 7397fb1
Copy full SHA for 7397fb1

3 files changed

+65-5Lines changed: 65 additions & 5 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/harness/unittests/typingsInstaller.ts‎

Copy file name to clipboardExpand all lines: src/harness/unittests/typingsInstaller.ts
+61-3Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,7 +1300,7 @@ namespace ts.projectSystem {
13001300
content: ""
13011301
};
13021302
const host = createServerHost([f, node]);
1303-
const cache = createMapFromTemplate<JsTyping.CachedTyping>({ node: { typingLocation: node.path, version: new Semver(1, 3, 0, /*isPrerelease*/ false) } });
1303+
const cache = createMapFromTemplate<JsTyping.CachedTyping>({ node: { typingLocation: node.path, version: Semver.parse("1.3.0") } });
13041304
const registry = createTypesRegistry("node");
13051305
const logger = trackingLogger();
13061306
const result = JsTyping.discoverTypings(host, logger.log, [f.path], getDirectoryPath(<Path>f.path), emptySafeList, cache, { enable: true }, ["fs", "bar"], registry);
@@ -1358,8 +1358,8 @@ namespace ts.projectSystem {
13581358
};
13591359
const host = createServerHost([app]);
13601360
const cache = createMapFromTemplate<JsTyping.CachedTyping>({
1361-
node: { typingLocation: node.path, version: new Semver(1, 3, 0, /*isPrerelease*/ false) },
1362-
commander: { typingLocation: commander.path, version: new Semver(1, 0, 0, /*isPrerelease*/ false) }
1361+
node: { typingLocation: node.path, version: Semver.parse("1.3.0") },
1362+
commander: { typingLocation: commander.path, version: Semver.parse("1.0.0") }
13631363
});
13641364
const registry = createTypesRegistry("node", "commander");
13651365
const logger = trackingLogger();
@@ -1371,6 +1371,64 @@ namespace ts.projectSystem {
13711371
assert.deepEqual(result.cachedTypingPaths, [node.path]);
13721372
assert.deepEqual(result.newTypingNames, ["commander"]);
13731373
});
1374+
1375+
it("should install expired typings with prerelease version of tsserver", () => {
1376+
const app = {
1377+
path: "/a/app.js",
1378+
content: ""
1379+
};
1380+
const cachePath = "/a/cache/";
1381+
const node = {
1382+
path: cachePath + "node_modules/@types/node/index.d.ts",
1383+
content: "export let y: number"
1384+
};
1385+
const host = createServerHost([app]);
1386+
const cache = createMapFromTemplate<JsTyping.CachedTyping>({
1387+
node: { typingLocation: node.path, version: Semver.parse("1.0.0") }
1388+
});
1389+
const registry = createTypesRegistry("node");
1390+
registry.delete(`ts${ts.versionMajorMinor}`);
1391+
const logger = trackingLogger();
1392+
const result = JsTyping.discoverTypings(host, logger.log, [app.path], getDirectoryPath(<Path>app.path), emptySafeList, cache, { enable: true }, ["http"], registry);
1393+
assert.deepEqual(logger.finish(), [
1394+
'Inferred typings from unresolved imports: ["node"]',
1395+
'Result: {"cachedTypingPaths":[],"newTypingNames":["node"],"filesToWatch":["/a/bower_components","/a/node_modules"]}',
1396+
]);
1397+
assert.deepEqual(result.cachedTypingPaths, []);
1398+
assert.deepEqual(result.newTypingNames, ["node"]);
1399+
});
1400+
1401+
1402+
it("prerelease typings are properly handled", () => {
1403+
const app = {
1404+
path: "/a/app.js",
1405+
content: ""
1406+
};
1407+
const cachePath = "/a/cache/";
1408+
const commander = {
1409+
path: cachePath + "node_modules/@types/commander/index.d.ts",
1410+
content: "export let x: number"
1411+
};
1412+
const node = {
1413+
path: cachePath + "node_modules/@types/node/index.d.ts",
1414+
content: "export let y: number"
1415+
};
1416+
const host = createServerHost([app]);
1417+
const cache = createMapFromTemplate<JsTyping.CachedTyping>({
1418+
node: { typingLocation: node.path, version: Semver.parse("1.3.0-next.0") },
1419+
commander: { typingLocation: commander.path, version: Semver.parse("1.3.0-next.0") }
1420+
});
1421+
const registry = createTypesRegistry("node", "commander");
1422+
registry.get("node")[`ts${ts.versionMajorMinor}`] = "1.3.0-next.1";
1423+
const logger = trackingLogger();
1424+
const result = JsTyping.discoverTypings(host, logger.log, [app.path], getDirectoryPath(<Path>app.path), emptySafeList, cache, { enable: true }, ["http", "commander"], registry);
1425+
assert.deepEqual(logger.finish(), [
1426+
'Inferred typings from unresolved imports: ["node","commander"]',
1427+
'Result: {"cachedTypingPaths":[],"newTypingNames":["node","commander"],"filesToWatch":["/a/bower_components","/a/node_modules"]}',
1428+
]);
1429+
assert.deepEqual(result.cachedTypingPaths, []);
1430+
assert.deepEqual(result.newTypingNames, ["node", "commander"]);
1431+
});
13741432
});
13751433

13761434
describe("telemetry events", () => {
Collapse file

‎src/server/typingsInstaller/typingsInstaller.ts‎

Copy file name to clipboardExpand all lines: src/server/typingsInstaller/typingsInstaller.ts
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ namespace ts.server.typingsInstaller {
311311

312312
// packageName is guaranteed to exist in typesRegistry by filterTypings
313313
const distTags = this.typesRegistry.get(packageName);
314-
const newVersion = Semver.parse(distTags[`ts${ts.versionMajorMinor}`] || distTags["latest"]);
314+
const newVersion = Semver.parse(distTags[`ts${ts.versionMajorMinor}`] || distTags[latestDistTag]);
315315
const newTyping: JsTyping.CachedTyping = { typingLocation: typingFile, version: newVersion };
316316
this.packageNameToTypingLocation.set(packageName, newTyping);
317317
installedTypingFiles.push(typingFile);
@@ -407,4 +407,6 @@ namespace ts.server.typingsInstaller {
407407
export function typingsName(packageName: string): string {
408408
return `@types/${packageName}@ts${versionMajorMinor}`;
409409
}
410+
411+
const latestDistTag = "latest";
410412
}
Collapse file

‎src/services/semver.ts‎

Copy file name to clipboardExpand all lines: src/services/semver.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace ts {
2323
}
2424

2525
// This must parse the output of `versionString`.
26-
static tryParse(semver: string, isPrerelease: boolean): Semver | undefined {
26+
private static tryParse(semver: string, isPrerelease: boolean): Semver | undefined {
2727
// Per the semver spec <http://semver.org/#spec-item-2>:
2828
// "A normal version number MUST take the form X.Y.Z where X, Y, and Z are non-negative integers, and MUST NOT contain leading zeroes."
2929
const rgx = isPrerelease ? /^(\d+)\.(\d+)\.0-next.(\d+)$/ : /^(\d+)\.(\d+)\.(\d+)$/;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.