Skip to content

Commit 0f369f3

Browse files
committed
Clean up some TODOs
1 parent a02e266 commit 0f369f3

File tree

3 files changed

+52
-38
lines changed

3 files changed

+52
-38
lines changed

Gulpfile.js

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ function esbuildTask(entrypoint, outfile, exportIsTsObject = false) {
170170
external: ["./node_modules/*"],
171171
conditions: ["require"],
172172
supported: {
173-
// "const-and-let": false, // Unfortunately, no: https://github.com/evanw/esbuild/issues/297
174-
"object-rest-spread": false, // See: https://github.com/evanw/esbuild/releases/tag/v0.14.46
173+
// "const-and-let": false, // https://github.com/evanw/esbuild/issues/297
174+
"object-rest-spread": false, // Performance enhancement, see: https://github.com/evanw/esbuild/releases/tag/v0.14.46
175175
},
176176
// legalComments: "none", // If we add copyright headers to the source files, uncomment.
177177
plugins: [
@@ -248,11 +248,12 @@ const lkgPreBuild = parallel(generateLibs, series(buildScripts, generateDiagnost
248248

249249

250250
const esbuildTsc = esbuildTask("./src/tsc/tsc.ts", "./built/local/tsc.js", /* exportIsTsObject */ true);
251+
const writeTscCJSShim = () => writeCJSReexport("./built/local/tsc/tsc.js", "./built/local/tsc.js");
251252

252253

253254
const buildTsc = () => {
254255
if (cmdLineOptions.bundle) return esbuildTsc.build();
255-
writeCJSReexport("./built/local/tsc/tsc.js", "./built/local/tsc.js");
256+
writeTscCJSShim();
256257
return buildProject("src/tsc");
257258
};
258259
task("tsc", series(lkgPreBuild, buildTsc));
@@ -263,8 +264,11 @@ cleanTasks.push(cleanTsc);
263264
task("clean-tsc", cleanTsc);
264265
task("clean-tsc").description = "Cleans outputs for the command-line compiler";
265266

266-
// TODO(jakebailey): watch mode doesn't mix with --bundle=false.
267-
const watchTsc = () => cmdLineOptions.bundle ? esbuildTsc.watch() : watchProject("src/tsc");
267+
const watchTsc = () => {
268+
if (cmdLineOptions.bundle) return esbuildTsc.watch();
269+
writeTscCJSShim();
270+
return watchProject("src/tsc");
271+
};
268272
task("watch-tsc", series(lkgPreBuild, parallel(watchLib, watchDiagnostics, watchTsc)));
269273
task("watch-tsc").description = "Watch for changes and rebuild the command-line compiler only.";
270274

@@ -274,15 +278,15 @@ const localPreBuild = parallel(generateLibs, series(buildScripts, generateDiagno
274278
// Pre-build steps to use based on supplied options.
275279
const preBuild = cmdLineOptions.lkg ? lkgPreBuild : localPreBuild;
276280

277-
const esbuildServices = esbuildTask("./src/typescript/typescript.ts", "./built/local/typescript.js", /* exportIsTsObject */ true);
278-
279281
// TODO(jakebailey): rename this; no longer "services".
280282

283+
const esbuildServices = esbuildTask("./src/typescript/typescript.ts", "./built/local/typescript.js", /* exportIsTsObject */ true);
284+
const writeServicesCJSShim = () => writeCJSReexport("./built/local/typescript/typescript.js", "./built/local/typescript.js");
281285
const buildServicesProject = () => buildProject("src/typescript");
282286

283287
const buildServices = () => {
284288
if (cmdLineOptions.bundle) return esbuildServices.build();
285-
writeCJSReexport("./built/local/typescript/typescript.js", "./built/local/typescript.js");
289+
writeServicesCJSShim();
286290
return buildServicesProject();
287291
};
288292

@@ -298,8 +302,11 @@ cleanTasks.push(cleanServices);
298302
task("clean-services", cleanServices);
299303
task("clean-services").description = "Cleans outputs for the language service";
300304

301-
// TODO(jakebailey): watch mode doesn't mix with --bundle=false.
302-
const watchServices = () => cmdLineOptions.bundle ? esbuildServices.watch() : watchProject("src/typescript");
305+
const watchServices = () => {
306+
if (cmdLineOptions.bundle) return esbuildServices.watch();
307+
writeServicesCJSShim();
308+
return watchProject("src/typescript");
309+
};
303310
task("watch-services", series(preBuild, parallel(watchLib, watchDiagnostics, watchServices)));
304311
task("watch-services").description = "Watches for changes and rebuild language service only";
305312
task("watch-services").flags = {
@@ -311,10 +318,11 @@ task("dts-services", series(preBuild, buildServicesProject, dtsServices));
311318
task("dts-services").description = "Builds typescript.d.ts";
312319

313320
const esbuildServer = esbuildTask("./src/tsserver/server.ts", "./built/local/tsserver.js", /* exportIsTsObject */ true);
321+
const writeServerCJSShim = () => writeCJSReexport("./built/local/tsserver/server.js", "./built/local/tsserver.js");
314322

315323
const buildServer = () => {
316324
if (cmdLineOptions.bundle) return esbuildServer.build();
317-
writeCJSReexport("./built/local/tsserver/server.js", "./built/local/tsserver.js");
325+
writeServerCJSShim();
318326
return buildProject("src/tsserver");
319327
};
320328
buildServer.displayName = "buildServer";
@@ -330,8 +338,11 @@ cleanTasks.push(cleanServer);
330338
task("clean-tsserver", cleanServer);
331339
task("clean-tsserver").description = "Cleans outputs for the language server";
332340

333-
// TODO(jakebailey): watch mode doesn't mix with --bundle=false.
334-
const watchServer = () => cmdLineOptions.bundle ? esbuildServer.watch() : watchProject("src/tsserver");
341+
const watchServer = () => {
342+
if (cmdLineOptions.bundle) return esbuildServer.watch();
343+
writeServerCJSShim();
344+
return watchProject("src/tsserver");
345+
};
335346
task("watch-tsserver", series(preBuild, parallel(watchLib, watchDiagnostics, watchServer)));
336347
task("watch-tsserver").description = "Watch for changes and rebuild the language server only";
337348
task("watch-tsserver").flags = {
@@ -354,11 +365,12 @@ task("watch-min").flags = {
354365
};
355366

356367
const esbuildLssl = esbuildTask("./src/tsserverlibrary/tsserverlibrary.ts", "./built/local/tsserverlibrary.js", /* exportIsTsObject */ true);
368+
const writeLsslCJSShim = () => writeCJSReexport("./built/local/tsserverlibrary/tsserverlibrary.js", "./built/local/tsserverlibrary.js");
357369

358370
const buildLsslProject = () => buildProject("src/tsserverlibrary");
359371
const buildLssl = () => {
360372
if (cmdLineOptions.bundle) return esbuildLssl.build();
361-
writeCJSReexport("./built/local/tsserverlibrary/tsserverlibrary.js", "./built/local/tsserverlibrary.js");
373+
writeLsslCJSShim();
362374
return buildLsslProject();
363375
};
364376
task("lssl", series(preBuild, buildLssl));
@@ -372,9 +384,11 @@ cleanTasks.push(cleanLssl);
372384
task("clean-lssl", cleanLssl);
373385
task("clean-lssl").description = "Clean outputs for the language service server library";
374386

375-
// TODO(jakebailey): watch mode doesn't mix with --bundle=false.
376-
const watchLssl = () => cmdLineOptions.bundle ? esbuildLssl.watch() : watchProject("src/tsserverlibrary");
377-
387+
const watchLssl = () => {
388+
if (cmdLineOptions.bundle) return esbuildLssl.watch();
389+
writeLsslCJSShim();
390+
return watchProject("src/tsserverlibrary");
391+
};
378392
task("watch-lssl", series(preBuild, parallel(watchLib, watchDiagnostics, watchLssl)));
379393
task("watch-lssl").description = "Watch for changes and rebuild tsserverlibrary only";
380394
task("watch-lssl").flags = {
@@ -391,10 +405,11 @@ task("dts", dts);
391405

392406
const testRunner = "./built/local/run.js";
393407
const esbuildTests = esbuildTask("./src/testRunner/_namespaces/Harness.ts", testRunner);
408+
const writeTestsCJSShim = () => writeCJSReexport("./built/local/testRunner/runner.js", testRunner);
394409

395410
const buildTests = () => {
396411
if (cmdLineOptions.bundle) return esbuildTests.build();
397-
writeCJSReexport("./built/local/testRunner/runner.js", testRunner);
412+
writeTestsCJSShim();
398413
return buildProject("src/testRunner");
399414
};
400415
task("tests", series(preBuild, parallel(buildLssl, buildTests)));
@@ -408,8 +423,11 @@ cleanTasks.push(cleanTests);
408423
task("clean-tests", cleanTests);
409424
task("clean-tests").description = "Cleans the outputs for the test infrastructure";
410425

411-
// TODO(jakebailey): watch mode doesn't mix with --bundle=false.
412-
const watchTests = () => cmdLineOptions.bundle ? esbuildTests.watch() : watchProject("src/testRunner");
426+
const watchTests = () => {
427+
if (cmdLineOptions.bundle) return esbuildTests.watch();
428+
writeTestsCJSShim();
429+
return watchProject("src/testRunner");
430+
};
413431

414432
const buildEslintRules = () => buildProject("scripts/eslint");
415433
task("build-eslint-rules", buildEslintRules);
@@ -461,7 +479,6 @@ const esbuildTypingsInstaller = esbuildTask("./src/typingsInstaller/nodeTypingsI
461479

462480
const buildTypingsInstaller = () => {
463481
if (cmdLineOptions.bundle) return esbuildTypingsInstaller.build();
464-
// TODO(jakebailey): In --bundle=false, can we emit to this directly?
465482
writeCJSReexport("./built/typingsInstaller/nodeTypingsInstaller.js", "./built/local/typingsInstaller.js");
466483
return buildProject("src/typingsInstaller");
467484
};
@@ -595,16 +612,19 @@ task("importDefinitelyTypedTests").description = "Runs the importDefinitelyTyped
595612
const cleanBuilt = () => del("built");
596613

597614
const produceLKG = async () => {
598-
// TODO(jakebailey): there are probably more files here that are needed.
615+
if (!cmdLineOptions.bundle) {
616+
throw new Error("LKG cannot be created when --bundle=false");
617+
}
618+
599619
const expectedFiles = [
620+
"built/local/cancellationToken.js",
600621
"built/local/tsc.js",
601622
"built/local/tsserver.js",
602-
"built/local/typescript.js",
603-
"built/local/typescript.d.ts",
604623
"built/local/tsserverlibrary.js",
605624
"built/local/tsserverlibrary.d.ts",
625+
"built/local/typescript.js",
626+
"built/local/typescript.d.ts",
606627
"built/local/typingsInstaller.js",
607-
"built/local/cancellationToken.js",
608628
"built/local/watchGuard.js",
609629
].concat(libs.map(lib => lib.target));
610630
const missingFiles = expectedFiles
@@ -635,8 +655,6 @@ task("generate-spec").description = "Generates a Markdown version of the Languag
635655
task("clean", series(parallel(cleanTasks), cleanBuilt));
636656
task("clean").description = "Cleans build outputs";
637657

638-
// TODO(jakebailey): Figure out what needs to change below.
639-
640658
const configureNightly = () => exec(process.execPath, ["scripts/configurePrerelease.js", "dev", "package.json", "src/compiler/corePublic.ts"]);
641659
task("configure-nightly", series(buildScripts, configureNightly));
642660
task("configure-nightly").description = "Runs scripts/configurePrerelease.ts to prepare a build for nightly publishing";

scripts/dtsBundler.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ function getDeclarationStatement(node: ts.Declaration): ts.Statement | undefined
6161

6262
const nullTransformationContext: ts.TransformationContext = (ts as any).nullTransformationContext;
6363

64-
// TODO(jakebailey): I can't seem to figure out how to load the real tsconfig, so, this will have to do.
65-
// But, why don't we get trailing commas?
6664
const program = ts.createProgram([entrypoint], { target: ts.ScriptTarget.ES5 });
6765

6866
const typeChecker = program.getTypeChecker();

scripts/produceLKG.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import * as glob from "glob";
88
const root = path.join(__dirname, "..");
99
const source = path.join(root, "built/local");
1010
const dest = path.join(root, "lib");
11-
const copyright = fs.readFileSync(path.join(__dirname, "../CopyrightNotice.txt"), "utf-8");
1211

1312
async function produceLKG() {
1413
console.log(`Building LKG from ${source} to ${dest}`);
@@ -65,8 +64,6 @@ async function copyTypesMap() {
6564
}
6665

6766
async function copyScriptOutputs() {
68-
// TODO(jakebailey): This does not work when unbundled.
69-
// TODO(jakebailey): Copyright is added by esbuild; maybe we should do it here?
7067
await copyFromBuiltLocal("cancellationToken.js");
7168
await copyFromBuiltLocal("tsc.js");
7269
await copyFromBuiltLocal("tsserver.js");
@@ -77,18 +74,19 @@ async function copyScriptOutputs() {
7774
}
7875

7976
async function copyDeclarationOutputs() {
80-
await copyWithCopyright("tsserverlibrary.d.ts");
81-
await copyWithCopyright("typescript.d.ts");
77+
await copyFromBuiltLocal("tsserverlibrary.d.ts");
78+
await copyFromBuiltLocal("typescript.d.ts");
8279
}
8380

8481
async function writeGitAttributes() {
8582
await fs.writeFile(path.join(dest, ".gitattributes"), `* text eol=lf`, "utf-8");
8683
}
8784

88-
async function copyWithCopyright(fileName: string, destName = fileName) {
89-
const content = await fs.readFile(path.join(source, fileName), "utf-8");
90-
await fs.writeFile(path.join(dest, destName), copyright + "\n" + content);
91-
}
85+
// const copyright = fs.readFileSync(path.join(__dirname, "../CopyrightNotice.txt"), "utf-8");
86+
// async function copyWithCopyright(fileName: string, destName = fileName) {
87+
// const content = await fs.readFile(path.join(source, fileName), "utf-8");
88+
// await fs.writeFile(path.join(dest, destName), copyright + "\n" + content);
89+
// }
9290

9391
async function copyFromBuiltLocal(fileName: string) {
9492
await fs.copy(path.join(source, fileName), path.join(dest, fileName));

0 commit comments

Comments
 (0)