Skip to content

Commit f17f50a

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 5c6d677 commit f17f50a

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
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";
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";

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 };

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-
}

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;
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
}
@@ -1042,18 +1061,21 @@ function convertToReusableDiagnosticRelatedInformation(diagnostic: ts.Diagnostic
10421061
};
10431062
}
10441063

1064+
/** @internal */
10451065
export enum BuilderProgramKind {
10461066
SemanticDiagnosticsBuilderProgram,
10471067
EmitAndSemanticDiagnosticsBuilderProgram
10481068
}
10491069

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

1078+
/** @internal */
10571079
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 {
10581080
let host: ts.BuilderProgramHost;
10591081
let newProgram: ts.Program;
@@ -1090,6 +1112,7 @@ function getTextHandlingSourceMapForSignature(text: string, data: ts.WriteFileCa
10901112
return data?.sourceMapUrlPos !== undefined ? text.substring(0, data.sourceMapUrlPos) : text;
10911113
}
10921114

1115+
/** @internal */
10931116
export function computeSignatureWithDiagnostics(
10941117
sourceFile: ts.SourceFile,
10951118
text: string,
@@ -1123,12 +1146,16 @@ export function computeSignatureWithDiagnostics(
11231146
}
11241147
}
11251148

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

1154+
/** @internal */
11301155
export function createBuilderProgram(kind: BuilderProgramKind.SemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.SemanticDiagnosticsBuilderProgram;
1156+
/** @internal */
11311157
export function createBuilderProgram(kind: BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram, builderCreationParameters: BuilderCreationParameters): ts.EmitAndSemanticDiagnosticsBuilderProgram;
1158+
/** @internal */
11321159
export function createBuilderProgram(kind: BuilderProgramKind, { newProgram, host, oldProgram, configFileParsingDiagnostics }: BuilderCreationParameters) {
11331160
// Return same program if underlying program doesnt change
11341161
let oldState = oldProgram && oldProgram.getState();
@@ -1470,6 +1497,7 @@ function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFileP
14701497
}
14711498
}
14721499

1500+
/** @internal */
14731501
export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.BuilderState.FileInfo {
14741502
return ts.isString(fileInfo) ?
14751503
{ version: fileInfo, signature: fileInfo, affectsGlobalScope: undefined, impliedFormat: undefined } :
@@ -1478,10 +1506,12 @@ export function toBuilderStateFileInfo(fileInfo: ProgramBuildInfoFileInfo): ts.B
14781506
{ version: fileInfo.version, signature: fileInfo.signature === false ? undefined : fileInfo.version, affectsGlobalScope: fileInfo.affectsGlobalScope, impliedFormat: fileInfo.impliedFormat };
14791507
}
14801508

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

1514+
/** @internal */
14851515
export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildInfo, buildInfoPath: string, host: ts.ReadBuildProgramHost): ts.EmitAndSemanticDiagnosticsBuilderProgram {
14861516
const buildInfoDirectory = ts.getDirectoryPath(ts.getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()));
14871517
const getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames());
@@ -1584,6 +1614,7 @@ export function createBuilderProgramUsingProgramBuildInfo(program: ProgramBuildI
15841614
}
15851615
}
15861616

1617+
/** @internal */
15871618
export function getBuildInfoFileVersionMap(
15881619
program: ProgramBuildInfo,
15891620
buildInfoPath: string,
@@ -1600,6 +1631,7 @@ export function getBuildInfoFileVersionMap(
16001631
return fileInfos;
16011632
}
16021633

1634+
/** @internal */
16031635
export function createRedirectedBuilderProgram(getState: () => { program?: ts.Program | undefined; compilerOptions: ts.CompilerOptions; }, configFileParsingDiagnostics: readonly ts.Diagnostic[]): ts.BuilderProgram {
16041636
return {
16051637
getState: ts.notImplemented,
@@ -1628,4 +1660,3 @@ export function createRedirectedBuilderProgram(getState: () => { program?: ts.Pr
16281660
return ts.Debug.checkDefined(getState().program);
16291661
}
16301662
}
1631-
}

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-
}

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-
}

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)