Skip to content

Commit 70b4b5e

Browse files
committed
Generated module conversion step - stripNamespaces
This step converts each file into an exported module by hoisting the namespace bodies into the global scope and transferring internal markers down onto declarations as needed. The namespaces are reconstructed as "barrel"-style modules, which are identical to the old namespace objects in structure. These reconstructed namespaces are then imported in the newly module-ified files, making existing expressions like "ts." valid.
1 parent 52d5cfc commit 70b4b5e

File tree

587 files changed

+4396
-1501
lines changed

Some content is hidden

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

587 files changed

+4396
-1501
lines changed

Diff for: src/compiler/_namespaces/ts.moduleSpecifiers.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/* Generated file to emulate the ts.moduleSpecifiers namespace. */
2+
3+
export * from "../moduleSpecifiers";

Diff for: src/compiler/_namespaces/ts.performance.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/* Generated file to emulate the ts.performance namespace. */
2+
3+
export * from "../performance";

Diff for: src/compiler/_namespaces/ts.ts

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/* Generated file to emulate the ts namespace. */
2+
3+
export * from "../corePublic";
4+
export * from "../core";
5+
export * from "../debug";
6+
export * from "../semver";
7+
export * from "../performanceCore";
8+
export * from "../perfLogger";
9+
export * from "../tracing";
10+
export * from "../types";
11+
export * from "../sys";
12+
export * from "../path";
13+
export * from "../diagnosticInformationMap.generated";
14+
export * from "../scanner";
15+
export * from "../utilitiesPublic";
16+
export * from "../utilities";
17+
export * from "../factory/baseNodeFactory";
18+
export * from "../factory/parenthesizerRules";
19+
export * from "../factory/nodeConverters";
20+
export * from "../factory/nodeFactory";
21+
export * from "../factory/emitNode";
22+
export * from "../factory/emitHelpers";
23+
export * from "../factory/nodeTests";
24+
export * from "../factory/utilities";
25+
export * from "../factory/utilitiesPublic";
26+
export * from "../parser";
27+
export * from "../commandLineParser";
28+
export * from "../moduleNameResolver";
29+
export * from "../binder";
30+
export * from "../symbolWalker";
31+
export * from "../checker";
32+
export * from "../visitorPublic";
33+
export * from "../sourcemap";
34+
export * from "../transformers/utilities";
35+
export * from "../transformers/destructuring";
36+
export * from "../transformers/taggedTemplate";
37+
export * from "../transformers/ts";
38+
export * from "../transformers/classFields";
39+
export * from "../transformers/typeSerializer";
40+
export * from "../transformers/legacyDecorators";
41+
export * from "../transformers/es2017";
42+
export * from "../transformers/es2018";
43+
export * from "../transformers/es2019";
44+
export * from "../transformers/es2020";
45+
export * from "../transformers/es2021";
46+
export * from "../transformers/esnext";
47+
export * from "../transformers/jsx";
48+
export * from "../transformers/es2016";
49+
export * from "../transformers/es2015";
50+
export * from "../transformers/es5";
51+
export * from "../transformers/generators";
52+
export * from "../transformers/module/module";
53+
export * from "../transformers/module/system";
54+
export * from "../transformers/module/esnextAnd2015";
55+
export * from "../transformers/module/node";
56+
export * from "../transformers/declarations/diagnostics";
57+
export * from "../transformers/declarations";
58+
export * from "../transformer";
59+
export * from "../emitter";
60+
export * from "../watchUtilities";
61+
export * from "../program";
62+
export * from "../builderStatePublic";
63+
export * from "../builderState";
64+
export * from "../builder";
65+
export * from "../builderPublic";
66+
export * from "../resolutionCache";
67+
export * from "../watch";
68+
export * from "../watchPublic";
69+
export * from "../tsbuild";
70+
export * from "../tsbuildPublic";
71+
import * as moduleSpecifiers from "./ts.moduleSpecifiers";
72+
export { moduleSpecifiers };
73+
import * as performance from "./ts.performance";
74+
export { performance };

Diff for: src/compiler/binder.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import * as ts from "./_namespaces/ts";
12

2-
/* @internal */
3-
namespace ts {
3+
/** @internal */
44
export const enum ModuleInstanceState {
55
NonInstantiated = 0,
66
Instantiated = 1,
@@ -15,6 +15,7 @@ interface ActiveLabel {
1515
referenced: boolean;
1616
}
1717

18+
/** @internal */
1819
export function getModuleInstanceState(node: ts.ModuleDeclaration, visited?: ts.ESMap<number, ModuleInstanceState | undefined>): ModuleInstanceState {
1920
if (node.body && !node.body.parent) {
2021
// getModuleInstanceStateForAliasTarget needs to walk up the parent chain, so parent pointers must be set on this tree already
@@ -173,6 +174,7 @@ function initFlowNode<T extends ts.FlowNode>(node: T) {
173174

174175
const binder = createBinder();
175176

177+
/** @internal */
176178
export function bindSourceFile(file: ts.SourceFile, options: ts.CompilerOptions) {
177179
ts.performance.mark("beforeBind");
178180
ts.perfLogger.logStartBindFile("" + file.fileName);
@@ -3498,6 +3500,7 @@ function isPurelyTypeDeclaration(s: ts.Statement): boolean {
34983500
}
34993501
}
35003502

3503+
/** @internal */
35013504
export function isExportsOrModuleExportsOrAlias(sourceFile: ts.SourceFile, node: ts.Expression): boolean {
35023505
let i = 0;
35033506
const q = ts.createQueue<ts.Expression>();
@@ -3533,4 +3536,3 @@ function lookupSymbolForName(container: ts.Node, name: ts.__String): ts.Symbol |
35333536
}
35343537
return container.symbol && container.symbol.exports && container.symbol.exports.get(name);
35353538
}
3536-
}

Diff for: src/compiler/builder.ts

+34-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/*@internal*/
2-
namespace ts {
1+
import * as ts from "./_namespaces/ts";
2+
3+
/** @internal */
34
export interface ReusableDiagnostic extends ReusableDiagnosticRelatedInformation {
45
/** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
56
reportsUnnecessary?: {};
@@ -9,6 +10,7 @@ export interface ReusableDiagnostic extends ReusableDiagnosticRelatedInformation
910
skippedOn?: keyof ts.CompilerOptions;
1011
}
1112

13+
/** @internal */
1214
export interface ReusableDiagnosticRelatedInformation {
1315
category: ts.DiagnosticCategory;
1416
code: number;
@@ -18,8 +20,10 @@ export interface ReusableDiagnosticRelatedInformation {
1820
messageText: string | ReusableDiagnosticMessageChain;
1921
}
2022

23+
/** @internal */
2124
export type ReusableDiagnosticMessageChain = ts.DiagnosticMessageChain;
2225

26+
/** @internal */
2327
export interface ReusableBuilderProgramState extends ts.BuilderState {
2428
/**
2529
* Cache of bind and check diagnostics for files with their Path being the key
@@ -67,11 +71,13 @@ export interface ReusableBuilderProgramState extends ts.BuilderState {
6771
latestChangedDtsFile: string | undefined;
6872
}
6973

74+
/** @internal */
7075
export const enum BuilderFileEmit {
7176
DtsOnly,
7277
Full
7378
}
7479

80+
/** @internal */
7581
/**
7682
* State to store the changed files, affected files and cache semantic diagnostics
7783
*/
@@ -133,6 +139,7 @@ export interface BuilderProgramState extends ts.BuilderState, ReusableBuilderPro
133139
filesChangingSignature?: ts.Set<ts.Path>;
134140
}
135141

142+
/** @internal */
136143
export type SavedBuildProgramEmitState = Pick<BuilderProgramState,
137144
"affectedFilesPendingEmit" |
138145
"affectedFilesPendingEmitIndex" |
@@ -767,11 +774,17 @@ function getBinderAndCheckerDiagnosticsOfFile(state: BuilderProgramState, source
767774
return ts.filterSemanticDiagnostics(diagnostics, state.compilerOptions);
768775
}
769776

777+
/** @internal */
770778
export type ProgramBuildInfoFileId = number & { __programBuildInfoFileIdBrand: any };
779+
/** @internal */
771780
export type ProgramBuildInfoFileIdListId = number & { __programBuildInfoFileIdListIdBrand: any };
781+
/** @internal */
772782
export type ProgramBuildInfoDiagnostic = ProgramBuildInfoFileId | [fileId: ProgramBuildInfoFileId, diagnostics: readonly ReusableDiagnostic[]];
783+
/** @internal */
773784
export type ProgramBuilderInfoFilePendingEmit = ProgramBuildInfoFileId | [fileId: ProgramBuildInfoFileId];
785+
/** @internal */
774786
export type ProgramBuildInfoReferencedMap = [fileId: ProgramBuildInfoFileId, fileIdListId: ProgramBuildInfoFileIdListId][];
787+
/** @internal */
775788
export type ProgramBuildInfoBuilderStateFileInfo = Omit<ts.BuilderState.FileInfo, "signature"> & {
776789
/**
777790
* Signature is
@@ -781,15 +794,18 @@ export type ProgramBuildInfoBuilderStateFileInfo = Omit<ts.BuilderState.FileInfo
781794
*/
782795
signature: string | false | undefined;
783796
};
797+
/** @internal */
784798
/**
785799
* [fileId, signature] if different from file's signature
786800
* fileId if file wasnt emitted
787801
*/
788802
export type ProgramBuildInfoEmitSignature = ProgramBuildInfoFileId | [fileId: ProgramBuildInfoFileId, signature: string];
803+
/** @internal */
789804
/**
790805
* ProgramBuildInfoFileInfo is string if FileInfo.version === FileInfo.signature && !FileInfo.affectsGlobalScope otherwise encoded FileInfo
791806
*/
792807
export type ProgramBuildInfoFileInfo = string | ProgramBuildInfoBuilderStateFileInfo;
808+
/** @internal */
793809
export interface ProgramMultiFileEmitBuildInfo {
794810
fileNames: readonly string[];
795811
fileInfos: readonly ProgramBuildInfoFileInfo[];
@@ -805,6 +821,7 @@ export interface ProgramMultiFileEmitBuildInfo {
805821
latestChangedDtsFile?: string | undefined;
806822
}
807823

824+
/** @internal */
808825
export interface ProgramBundleEmitBuildInfo {
809826
fileNames: readonly string[];
810827
fileInfos: readonly string[];
@@ -813,8 +830,10 @@ export interface ProgramBundleEmitBuildInfo {
813830
latestChangedDtsFile: string | undefined;
814831
}
815832

833+
/** @internal */
816834
export type ProgramBuildInfo = ProgramMultiFileEmitBuildInfo | ProgramBundleEmitBuildInfo;
817835

836+
/** @internal */
818837
export function isProgramBundleEmitBuildInfo(info: ProgramBuildInfo): info is ProgramBundleEmitBuildInfo {
819838
return !!ts.outFile(info.options || {});
820839
}
@@ -1044,18 +1063,21 @@ function convertToReusableDiagnosticRelatedInformation(diagnostic: ts.Diagnostic
10441063
};
10451064
}
10461065

1066+
/** @internal */
10471067
export enum BuilderProgramKind {
10481068
SemanticDiagnosticsBuilderProgram,
10491069
EmitAndSemanticDiagnosticsBuilderProgram
10501070
}
10511071

1072+
/** @internal */
10521073
export interface BuilderCreationParameters {
10531074
newProgram: ts.Program;
10541075
host: ts.BuilderProgramHost;
10551076
oldProgram: ts.BuilderProgram | undefined;
10561077
configFileParsingDiagnostics: readonly ts.Diagnostic[];
10571078
}
10581079

1080+
/** @internal */
10591081
export function getBuilderCreationParameters(newProgramOrRootNames: ts.Program | readonly string[] | undefined, hostOrOptions: ts.BuilderProgramHost | ts.CompilerOptions | undefined, oldProgramOrHost?: ts.BuilderProgram | ts.CompilerHost, configFileParsingDiagnosticsOrOldProgram?: readonly ts.Diagnostic[] | ts.BuilderProgram, configFileParsingDiagnostics?: readonly ts.Diagnostic[], projectReferences?: readonly ts.ProjectReference[]): BuilderCreationParameters {
10601082
let host: ts.BuilderProgramHost;
10611083
let newProgram: ts.Program;
@@ -1092,6 +1114,7 @@ function getTextHandlingSourceMapForSignature(text: string, data: ts.WriteFileCa
10921114
return data?.sourceMapUrlPos !== undefined ? text.substring(0, data.sourceMapUrlPos) : text;
10931115
}
10941116

1117+
/** @internal */
10951118
export function computeSignatureWithDiagnostics(
10961119
sourceFile: ts.SourceFile,
10971120
text: string,
@@ -1125,12 +1148,16 @@ export function computeSignatureWithDiagnostics(
11251148
}
11261149
}
11271150

1151+
/** @internal */
11281152
export function computeSignature(text: string, computeHash: ts.BuilderState.ComputeHash | undefined, data?: ts.WriteFileCallbackData) {
11291153
return (computeHash ?? ts.generateDjb2Hash)(getTextHandlingSourceMapForSignature(text, data));
11301154
}
11311155

1156+
/** @internal */
11321157
export function createBuilderProgram(kind: BuilderProgramKind.SemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.SemanticDiagnosticsBuilderProgram;
1158+
/** @internal */
11331159
export function createBuilderProgram(kind: BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.EmitAndSemanticDiagnosticsBuilderProgram;
1160+
/** @internal */
11341161
export function createBuilderProgram(kind: BuilderProgramKind, { newProgram, host, oldProgram, configFileParsingDiagnostics }: BuilderCreationParameters) {
11351162
// Return same program if underlying program doesnt change
11361163
let oldState = oldProgram && oldProgram.getState();
@@ -1472,6 +1499,7 @@ function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFileP
14721499
}
14731500
}
14741501

1502+
/** @internal */
14751503
export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.BuilderState.FileInfo {
14761504
return ts.isString(fileInfo) ?
14771505
{ version: fileInfo, signature: fileInfo, affectsGlobalScope: undefined, impliedFormat: undefined } :
@@ -1480,10 +1508,12 @@ export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.B
14801508
{ version: fileInfo.version, signature: fileInfo.signature === false ? undefined : fileInfo.version, affectsGlobalScope: fileInfo.affectsGlobalScope, impliedFormat: fileInfo.impliedFormat };
14811509
}
14821510

1511+
/** @internal */
14831512
export function toBuilderFileEmit(value: ProgramBuilderInfoFilePendingEmit): BuilderFileEmit{
14841513
return ts.isNumber(value) ? BuilderFileEmit.Full : BuilderFileEmit.DtsOnly;
14851514
}
14861515

1516+
/** @internal */
14871517
export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildInfo, buildInfoPath: string, host: ts.ReadBuildProgramHost): ts.EmitAndSemanticDiagnosticsBuilderProgram {
14881518
const buildInfoDirectory = ts.getDirectoryPath(ts.getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()));
14891519
const getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames());
@@ -1586,6 +1616,7 @@ export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildI
15861616
}
15871617
}
15881618

1619+
/** @internal */
15891620
export function getBuildInfoFileVersionMap(
15901621
program: ProgramBuildInfo,
15911622
buildInfoPath: string,
@@ -1602,6 +1633,7 @@ export function getBuildInfoFileVersionMap(
16021633
return fileInfos;
16031634
}
16041635

1636+
/** @internal */
16051637
export function createRedirectedBuilderProgram(getState: () => { program?: ts.Program | undefined; compilerOptions: ts.CompilerOptions; }, configFileParsingDiagnostics: readonly ts.Diagnostic[]): ts.BuilderProgram {
16061638
return {
16071639
getState: ts.notImplemented,
@@ -1630,4 +1662,3 @@ export function createRedirectedBuilderProgram(getState: () => { program?: ts.Pr
16301662
return ts.Debug.checkDefined(getState().program);
16311663
}
16321664
}
1633-
}

Diff for: src/compiler/builderPublic.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
namespace ts {
1+
import * as ts from "./_namespaces/ts";
2+
23
export type AffectedFileResult<T> = { result: T; affected: ts.SourceFile | ts.Program; } | undefined;
34

45
export interface BuilderProgramHost {
@@ -178,4 +179,3 @@ export function createAbstractBuilder(newProgramOrRootNames: ts.Program | readon
178179
const { newProgram, configFileParsingDiagnostics: newConfigFileParsingDiagnostics } = ts.getBuilderCreationParameters(newProgramOrRootNames, hostOrOptions, oldProgramOrHost, configFileParsingDiagnosticsOrOldProgram, configFileParsingDiagnostics, projectReferences);
179180
return ts.createRedirectedBuilderProgram(() => ({ program: newProgram, compilerOptions: newProgram.getCompilerOptions() }), newConfigFileParsingDiagnostics);
180181
}
181-
}

Diff for: src/compiler/builderState.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/*@internal*/
2-
namespace ts {
1+
import * as ts from "./_namespaces/ts";
2+
3+
/** @internal */
34
export function getFileEmitOutput(program: ts.Program, sourceFile: ts.SourceFile, emitOnlyDtsFiles: boolean,
45
cancellationToken?: ts.CancellationToken, customTransformers?: ts.CustomTransformers, forceDtsEmit?: boolean): ts.EmitOutput {
56
const outputFiles: ts.OutputFile[] = [];
@@ -10,6 +11,7 @@ export function getFileEmitOutput(program: ts.Program, sourceFile: ts.SourceFile
1011
outputFiles.push({ name: fileName, writeByteOrderMark, text });
1112
}
1213
}
14+
/** @internal */
1315
export interface BuilderState {
1416
/**
1517
* Information of the file eg. its version, signature etc
@@ -57,6 +59,7 @@ export interface BuilderState {
5759
*/
5860
allFileNames?: readonly string[];
5961
}
62+
/** @internal */
6063
export namespace BuilderState {
6164
/**
6265
* Information about the source file: Its version and optional signature from last emit
@@ -627,4 +630,3 @@ export namespace BuilderState {
627630
return ts.arrayFrom(ts.mapDefinedIterator(seenFileNamesMap.values(), value => value));
628631
}
629632
}
630-
}

Diff for: src/compiler/builderStatePublic.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
namespace ts {
1+
import * as ts from "./_namespaces/ts";
2+
23
export interface EmitOutput {
34
outputFiles: OutputFile[];
45
emitSkipped: boolean;
@@ -11,4 +12,3 @@ export interface OutputFile {
1112
text: string;
1213
/* @internal */ buildInfo?: ts.BuildInfo
1314
}
14-
}

0 commit comments

Comments
 (0)