Skip to content

Commit 5a2ca2c

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 d12318c commit 5a2ca2c

File tree

586 files changed

+4389
-1500
lines changed

Some content is hidden

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

586 files changed

+4389
-1500
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

+33-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 = [fileId: ProgramBuildInfoFileId, emitKind: BuilderFileEmit];
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;
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;
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
}
@@ -1039,18 +1058,21 @@ function convertToReusableDiagnosticRelatedInformation(diagnostic: ts.Diagnostic
10391058
};
10401059
}
10411060

1061+
/** @internal */
10421062
export enum BuilderProgramKind {
10431063
SemanticDiagnosticsBuilderProgram,
10441064
EmitAndSemanticDiagnosticsBuilderProgram
10451065
}
10461066

1067+
/** @internal */
10471068
export interface BuilderCreationParameters {
10481069
newProgram: ts.Program;
10491070
host: ts.BuilderProgramHost;
10501071
oldProgram: ts.BuilderProgram | undefined;
10511072
configFileParsingDiagnostics: readonly ts.Diagnostic[];
10521073
}
10531074

1075+
/** @internal */
10541076
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 {
10551077
let host: ts.BuilderProgramHost;
10561078
let newProgram: ts.Program;
@@ -1087,6 +1109,7 @@ function getTextHandlingSourceMapForSignature(text: string, data: ts.WriteFileCa
10871109
return data?.sourceMapUrlPos !== undefined ? text.substring(0, data.sourceMapUrlPos) : text;
10881110
}
10891111

1112+
/** @internal */
10901113
export function computeSignatureWithDiagnostics(
10911114
sourceFile: ts.SourceFile,
10921115
text: string,
@@ -1120,12 +1143,16 @@ export function computeSignatureWithDiagnostics(
11201143
}
11211144
}
11221145

1146+
/** @internal */
11231147
export function computeSignature(text: string, computeHash: ts.BuilderState.ComputeHash | undefined, data?: ts.WriteFileCallbackData) {
11241148
return (computeHash ?? ts.generateDjb2Hash)(getTextHandlingSourceMapForSignature(text, data));
11251149
}
11261150

1151+
/** @internal */
11271152
export function createBuilderProgram(kind: BuilderProgramKind.SemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.SemanticDiagnosticsBuilderProgram;
1153+
/** @internal */
11281154
export function createBuilderProgram(kind: BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.EmitAndSemanticDiagnosticsBuilderProgram;
1155+
/** @internal */
11291156
export function createBuilderProgram(kind: BuilderProgramKind, { newProgram, host, oldProgram, configFileParsingDiagnostics }: BuilderCreationParameters) {
11301157
// Return same program if underlying program doesnt change
11311158
let oldState = oldProgram && oldProgram.getState();
@@ -1467,6 +1494,7 @@ function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFileP
14671494
}
14681495
}
14691496

1497+
/** @internal */
14701498
export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.BuilderState.FileInfo {
14711499
return ts.isString(fileInfo) ?
14721500
{ version: fileInfo, signature: fileInfo, affectsGlobalScope: undefined, impliedFormat: undefined } :
@@ -1475,6 +1503,7 @@ export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.B
14751503
{ version: fileInfo.version, signature: fileInfo.signature === false ? undefined : fileInfo.version, affectsGlobalScope: fileInfo.affectsGlobalScope, impliedFormat: fileInfo.impliedFormat };
14761504
}
14771505

1506+
/** @internal */
14781507
export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildInfo, buildInfoPath: string, host: ts.ReadBuildProgramHost): ts.EmitAndSemanticDiagnosticsBuilderProgram {
14791508
const buildInfoDirectory = ts.getDirectoryPath(ts.getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()));
14801509
const getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames());
@@ -1577,6 +1606,7 @@ export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildI
15771606
}
15781607
}
15791608

1609+
/** @internal */
15801610
export function getBuildInfoFileVersionMap(
15811611
program: ProgramBuildInfo,
15821612
buildInfoPath: string,
@@ -1593,6 +1623,7 @@ export function getBuildInfoFileVersionMap(
15931623
return fileInfos;
15941624
}
15951625

1626+
/** @internal */
15961627
export function createRedirectedBuilderProgram(getState: () => { program?: ts.Program | undefined; compilerOptions: ts.CompilerOptions; }, configFileParsingDiagnostics: readonly ts.Diagnostic[]): ts.BuilderProgram {
15971628
return {
15981629
getState: ts.notImplemented,
@@ -1621,4 +1652,3 @@ export function createRedirectedBuilderProgram(getState: () => { program?: ts.Pr
16211652
return ts.Debug.checkDefined(getState().program);
16221653
}
16231654
}
1624-
}

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
@@ -625,4 +628,3 @@ export namespace BuilderState {
625628
return ts.arrayFrom(ts.mapDefinedIterator(seenFileNamesMap.values(), value => value));
626629
}
627630
}
628-
}

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)