Skip to content

Commit b1d5bf2

Browse files
committed
Merge remote-tracking branch 'origin/main' into fix/conditional-infer-same-shape-tuple
2 parents 20bd49a + f2df10f commit b1d5bf2

File tree

3,820 files changed

+401026
-240999
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,820 files changed

+401026
-240999
lines changed

.eslintrc.json

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"es6": true
1212
},
1313
"plugins": [
14-
"@typescript-eslint", "no-null", "import", "eslint-plugin-local"
14+
"@typescript-eslint", "no-null", "import", "eslint-plugin-local", "simple-import-sort"
1515
],
1616
"ignorePatterns": [
1717
"**/node_modules/**",
@@ -25,11 +25,8 @@
2525
"/coverage/**"
2626
],
2727
"rules": {
28-
"sort-imports": ["error", {
29-
"ignoreCase": true,
30-
"ignoreDeclarationSort": true,
31-
"allowSeparatedGroups": true
32-
}],
28+
"simple-import-sort/imports": "error",
29+
"simple-import-sort/exports": "error",
3330

3431
"@typescript-eslint/adjacent-overload-signatures": "error",
3532
"@typescript-eslint/array-type": "error",
@@ -180,6 +177,14 @@
180177
{ "name": "exports" }
181178
]
182179
}
180+
},
181+
{
182+
// These files contain imports in a specific order that are generally unsafe to modify.
183+
"files": ["**/_namespaces/**"],
184+
"rules": {
185+
"simple-import-sort/imports": "off",
186+
"simple-import-sort/exports": "off"
187+
}
183188
}
184189
]
185190
}

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
*.js linguist-language=TypeScript
2+
**/*.json linguist-language=jsonc
23
* -text

.github/fabricbot.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
{
3232
"name": "addReply",
3333
"parameters": {
34-
"comment": "Thanks for the PR! It looks like you've changed the TSServer protocol in some way. Please ensure that any changes here don't break consumers of the current TSServer API. For some extra review, we'll ping @sheetalkamat, @mjbvz, and @minestarks for you. Feel free to loop in other consumers/maintainers if necessary"
34+
"comment": "Thanks for the PR! It looks like you've changed the TSServer protocol in some way. Please ensure that any changes here don't break consumers of the current TSServer API. For some extra review, we'll ping @sheetalkamat, @mjbvz, @zkat, and @joj for you. Feel free to loop in other consumers/maintainers if necessary"
3535
}
3636
}
3737
],
@@ -487,7 +487,7 @@
487487
{
488488
"name": "addReply",
489489
"parameters": {
490-
"comment": "Thanks for the PR! It looks like you've changed 'preProcess.ts' in some way. Please ensure that any changes here don't break consumers with unique project systems such as Visual Studio. Pinging @sheetalkamat and @minestarks so they are aware of the changes."
490+
"comment": "Thanks for the PR! It looks like you've changed 'preProcess.ts' in some way. Please ensure that any changes here don't break consumers with unique project systems such as Visual Studio. Pinging @sheetalkamat, @zkat, and @joj so they are aware of the changes."
491491
}
492492
}
493493
]

.vscode/launch.template.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@
4040
"env": {
4141
"NODE_ENV": "testing"
4242
},
43+
"outFiles": [
44+
"${workspaceFolder}/built/**/*.js",
45+
"${workspaceFolder}/built/**/*.mjs",
46+
"${workspaceFolder}/built/**/*.cjs",
47+
"!**/node_modules/**"
48+
],
4349
"sourceMaps": true,
4450
"smartStep": true,
4551
"preLaunchTask": "npm: build:tests",

.vscode/settings.template.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
// ".git-blame-ignore-revs"
1414
// ]
1515

16+
// Match eslint-plugin-simple-import-sort in organize/auto-imports.
17+
"typescript.unstable": {
18+
"organizeImportsCollation": "unicode",
19+
"organizeImportsCaseFirst": "upper",
20+
"organizeImportsIgnoreCase": false,
21+
"organizeImportsNumericCollation": true
22+
},
23+
1624
// These options search the repo recursively and slow down
1725
// the build task menu. We define our own in tasks.json.
1826
"typescript.tsc.autoDetect": "off",

Herebyfile.mjs

Lines changed: 77 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
// @ts-check
2-
import path from "path";
3-
import fs from "fs";
2+
import { CancelToken } from "@esfx/canceltoken";
3+
import chalk from "chalk";
4+
import chokidar from "chokidar";
45
import del from "del";
5-
import { task } from "hereby";
6+
import esbuild from "esbuild";
7+
import { EventEmitter } from "events";
8+
import fs from "fs";
9+
import fsExtra from "fs-extra";
610
import _glob from "glob";
11+
import { task } from "hereby";
12+
import path from "path";
713
import util from "util";
8-
import chalk from "chalk";
9-
import { Debouncer, Deferred, exec, getDiffTool, getDirSize, memoize, needsUpdate, readJson } from "./scripts/build/utils.mjs";
10-
import { localBaseline, localRwcBaseline, refBaseline, refRwcBaseline, runConsoleTests } from "./scripts/build/tests.mjs";
11-
import { buildProject, cleanProject, watchProject } from "./scripts/build/projects.mjs";
14+
1215
import { localizationDirectories } from "./scripts/build/localization.mjs";
1316
import cmdLineOptions from "./scripts/build/options.mjs";
14-
import esbuild from "esbuild";
15-
import chokidar from "chokidar";
16-
import { EventEmitter } from "events";
17-
import { CancelToken } from "@esfx/canceltoken";
17+
import { buildProject, cleanProject, watchProject } from "./scripts/build/projects.mjs";
18+
import { localBaseline, localRwcBaseline, refBaseline, refRwcBaseline, runConsoleTests } from "./scripts/build/tests.mjs";
19+
import { Debouncer, Deferred, exec, getDiffTool, getDirSize, memoize, needsUpdate, readJson } from "./scripts/build/utils.mjs";
1820

1921
const glob = util.promisify(_glob);
2022

@@ -58,10 +60,7 @@ export const generateLibs = task({
5860

5961
for (const source of lib.sources) {
6062
const contents = await fs.promises.readFile(source, "utf-8");
61-
// TODO(jakebailey): "\n\n" is for compatibility with our current tests; our test baselines
62-
// are sensitive to the positions of things in the lib files. Eventually remove this,
63-
// or remove lib.d.ts line numbers from our baselines.
64-
output += "\n\n" + contents.replace(/\r\n/g, "\n");
63+
output += "\n" + contents.replace(/\r\n/g, "\n");
6564
}
6665

6766
await fs.promises.writeFile(lib.target, output);
@@ -162,7 +161,7 @@ async function runDtsBundler(entrypoint, output) {
162161
* @typedef BundlerTaskOptions
163162
* @property {boolean} [exportIsTsObject]
164163
* @property {boolean} [treeShaking]
165-
* @property {esbuild.WatchMode} [watchMode]
164+
* @property {() => void} [onWatchRebuild]
166165
*/
167166
function createBundler(entrypoint, outfile, taskOptions = {}) {
168167
const getOptions = memoize(async () => {
@@ -181,28 +180,6 @@ function createBundler(entrypoint, outfile, taskOptions = {}) {
181180
packages: "external",
182181
logLevel: "warning",
183182
// legalComments: "none", // If we add copyright headers to the source files, uncomment.
184-
plugins: [
185-
{
186-
name: "fix-require",
187-
setup: (build) => {
188-
build.onEnd(async () => {
189-
// esbuild converts calls to "require" to "__require"; this function
190-
// calls the real require if it exists, or throws if it does not (rather than
191-
// throwing an error like "require not defined"). But, since we want typescript
192-
// to be consumable by other bundlers, we need to convert these calls back to
193-
// require so our imports are visible again.
194-
//
195-
// The leading spaces are to keep the offsets the same within the files to keep
196-
// source maps working (though this only really matters for the line the require is on).
197-
//
198-
// See: https://github.com/evanw/esbuild/issues/1905
199-
let contents = await fs.promises.readFile(outfile, "utf-8");
200-
contents = contents.replace(/__require\(/g, " require(");
201-
await fs.promises.writeFile(outfile, contents);
202-
});
203-
},
204-
}
205-
]
206183
};
207184

208185
if (taskOptions.exportIsTsObject) {
@@ -212,14 +189,61 @@ function createBundler(entrypoint, outfile, taskOptions = {}) {
212189
options.globalName = "ts";
213190
// If we are in a CJS context, export the ts namespace.
214191
options.footer = { js: `\nif (typeof module !== "undefined" && module.exports) { module.exports = ts; }` };
192+
193+
// esbuild converts calls to "require" to "__require"; this function
194+
// calls the real require if it exists, or throws if it does not (rather than
195+
// throwing an error like "require not defined"). But, since we want typescript
196+
// to be consumable by other bundlers, we need to convert these calls back to
197+
// require so our imports are visible again.
198+
//
199+
// The leading spaces are to keep the offsets the same within the files to keep
200+
// source maps working (though this only really matters for the line the require is on).
201+
//
202+
// See: https://github.com/evanw/esbuild/issues/1905
203+
options.define = { require: "$$require" };
204+
options.plugins = [
205+
{
206+
name: "fix-require",
207+
setup: (build) => {
208+
build.onEnd(async () => {
209+
let contents = await fs.promises.readFile(outfile, "utf-8");
210+
contents = contents.replace(/\$\$require/g, " require");
211+
await fs.promises.writeFile(outfile, contents);
212+
});
213+
},
214+
}
215+
];
215216
}
216217

217218
return options;
218219
});
219220

220221
return {
221222
build: async () => esbuild.build(await getOptions()),
222-
watch: async () => esbuild.build({ ...await getOptions(), watch: taskOptions.watchMode ?? true, logLevel: "info" }),
223+
watch: async () => {
224+
/** @type {esbuild.BuildOptions} */
225+
const options = { ...await getOptions(), logLevel: "info" };
226+
if (taskOptions.onWatchRebuild) {
227+
const onRebuild = taskOptions.onWatchRebuild;
228+
options.plugins = (options.plugins?.slice(0) ?? []).concat([{
229+
name: "watch",
230+
setup: (build) => {
231+
let firstBuild = true;
232+
build.onEnd(() => {
233+
if (firstBuild) {
234+
firstBuild = false;
235+
}
236+
else {
237+
onRebuild();
238+
}
239+
});
240+
}
241+
}]);
242+
}
243+
244+
const ctx = await esbuild.context(options);
245+
ctx.watch();
246+
},
223247
};
224248
}
225249

@@ -425,10 +449,8 @@ const { main: tests, watch: watchTests } = entrypointBuildTask({
425449
bundlerOptions: {
426450
// Ensure we never drop any dead code, which might be helpful while debugging.
427451
treeShaking: false,
428-
watchMode: {
429-
onRebuild() {
430-
watchTestsEmitter.emit("rebuild");
431-
}
452+
onWatchRebuild() {
453+
watchTestsEmitter.emit("rebuild");
432454
}
433455
},
434456
});
@@ -493,6 +515,7 @@ const { main: watchGuard, watch: watchWatchGuard } = entrypointBuildTask({
493515
export const generateTypesMap = task({
494516
name: "generate-types-map",
495517
run: async () => {
518+
await fs.promises.mkdir("./built/local", { recursive: true });
496519
const source = "src/server/typesMap.json";
497520
const target = "built/local/typesMap.json";
498521
const contents = await fs.promises.readFile(source, "utf-8");
@@ -818,13 +841,6 @@ export const lkg = task({
818841
dependencies: [produceLKG],
819842
});
820843

821-
export const generateSpec = task({
822-
name: "generate-spec",
823-
description: "Generates a Markdown version of the Language Specification",
824-
hiddenFromTaskList: true,
825-
run: () => exec("cscript", ["//nologo", "scripts/word2md.mjs", path.resolve("doc/TypeScript Language Specification - ARCHIVED.docx"), path.resolve("doc/spec-ARCHIVED.md")]),
826-
});
827-
828844
export const cleanBuilt = task({
829845
name: "clean-built",
830846
hiddenFromTaskList: true,
@@ -861,3 +877,14 @@ export const help = task({
861877
hiddenFromTaskList: true,
862878
run: () => exec("hereby", ["--tasks"], { hidePrompt: true }),
863879
});
880+
881+
export const bumpLkgToNightly = task({
882+
name: "bump-lkg-to-nightly",
883+
description: "Bumps typescript in package.json to the latest nightly and copies it to LKG.",
884+
run: async () => {
885+
await exec("npm", ["install", "--save-dev", "--save-exact", "typescript@next"]);
886+
await fs.promises.rm("lib", { recursive: true, force: true });
887+
await fsExtra.copy("node_modules/typescript/lib", "lib");
888+
await fs.promises.writeFile("lib/.gitattributes", "* text eol=lf");
889+
}
890+
});

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ There are many ways to [contribute](https://github.com/microsoft/TypeScript/blob
3333
* Help each other in the [TypeScript Community Discord](https://discord.gg/typescript).
3434
* Join the [#typescript](https://twitter.com/search?q=%23TypeScript) discussion on Twitter.
3535
* [Contribute bug fixes](https://github.com/microsoft/TypeScript/blob/main/CONTRIBUTING.md).
36-
* Read the archived language specification ([docx](https://github.com/microsoft/TypeScript/blob/main/doc/TypeScript%20Language%20Specification%20-%20ARCHIVED.docx?raw=true),
37-
[pdf](https://github.com/microsoft/TypeScript/blob/main/doc/TypeScript%20Language%20Specification%20-%20ARCHIVED.pdf?raw=true), [md](https://github.com/microsoft/TypeScript/blob/main/doc/spec-ARCHIVED.md)).
3836

3937
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see
4038
the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected])

doc/README.md

Lines changed: 0 additions & 9 deletions
This file was deleted.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

doc/handbook/README.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

doc/images/image1.png

-11.4 KB
Binary file not shown.

doc/images/image2.png

-10 KB
Binary file not shown.

doc/images/image3.png

-5.86 KB
Binary file not shown.

doc/images/image4.png

-15.7 KB
Binary file not shown.

doc/logo.svg

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)