Skip to content

Commit 514e09a

Browse files
committed
Make a few changes to allow all code to be loaded as one project
1 parent 9371edc commit 514e09a

File tree

7 files changed

+32
-51
lines changed

7 files changed

+32
-51
lines changed

Diff for: src/compiler/factory/nodeFactory.ts

+12-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ namespace ts {
1414
NoOriginalNode = 1 << 3,
1515
}
1616

17+
const nodeFactoryPatchers: ((factory: NodeFactory) => void)[] = [];
18+
19+
/* @internal */
20+
export function addNodeFactoryPatcher(fn: (factory: NodeFactory) => void) {
21+
nodeFactoryPatchers.push(fn);
22+
}
23+
1724
/**
1825
* Creates a `NodeFactory` that can be used to create and update a syntax tree.
1926
* @param flags Flags that control factory behavior.
@@ -161,11 +168,11 @@ namespace ts {
161168
createObjectLiteralExpression,
162169
updateObjectLiteralExpression,
163170
createPropertyAccessExpression: flags & NodeFactoryFlags.NoIndentationOnFreshPropertyAccess ?
164-
(expression, name) => setEmitFlags(createPropertyAccessExpression(expression, name), EmitFlags.NoIndentation) :
171+
(expression: Expression, name: string | MemberName) => setEmitFlags(createPropertyAccessExpression(expression, name), EmitFlags.NoIndentation) :
165172
createPropertyAccessExpression,
166173
updatePropertyAccessExpression,
167174
createPropertyAccessChain: flags & NodeFactoryFlags.NoIndentationOnFreshPropertyAccess ?
168-
(expression, questionDotToken, name) => setEmitFlags(createPropertyAccessChain(expression, questionDotToken, name), EmitFlags.NoIndentation) :
175+
(expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName) => setEmitFlags(createPropertyAccessChain(expression, questionDotToken, name), EmitFlags.NoIndentation) :
169176
createPropertyAccessChain,
170177
updatePropertyAccessChain,
171178
createElementAccessExpression,
@@ -534,7 +541,9 @@ namespace ts {
534541
liftToBlock,
535542
mergeLexicalEnvironment,
536543
updateModifiers,
537-
};
544+
} as any;
545+
546+
forEach(nodeFactoryPatchers, fn => fn(factory));
538547

539548
return factory;
540549

Diff for: src/deprecatedCompat/4.2/abstractConstructorTypes.ts

+2-10
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,8 @@ namespace ts {
5959

6060
// Patch `createNodeFactory` because it creates the factories that are provided to transformers
6161
// in the public API.
62-
63-
const prevCreateNodeFactory = createNodeFactory;
64-
65-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-qualifier
66-
ts.createNodeFactory = (flags, baseFactory) => {
67-
const factory = prevCreateNodeFactory(flags, baseFactory);
68-
patchNodeFactory(factory);
69-
return factory;
70-
};
62+
addNodeFactoryPatcher(patchNodeFactory);
7163

7264
// Patch `ts.factory` because its public
7365
patchNodeFactory(factory);
74-
}
66+
}

Diff for: src/deprecatedCompat/4.6/importTypeAssertions.ts

+2-10
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,8 @@ namespace ts {
8080

8181
// Patch `createNodeFactory` because it creates the factories that are provided to transformers
8282
// in the public API.
83-
84-
const prevCreateNodeFactory = createNodeFactory;
85-
86-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-qualifier
87-
ts.createNodeFactory = (flags, baseFactory) => {
88-
const factory = prevCreateNodeFactory(flags, baseFactory);
89-
patchNodeFactory(factory);
90-
return factory;
91-
};
83+
addNodeFactoryPatcher(patchNodeFactory);
9284

9385
// Patch `ts.factory` because its public
9486
patchNodeFactory(factory);
95-
}
87+
}

Diff for: src/deprecatedCompat/4.7/typeParameterModifiers.ts

+2-10
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,8 @@ namespace ts {
6565

6666
// Patch `createNodeFactory` because it creates the factories that are provided to transformers
6767
// in the public API.
68-
69-
const prevCreateNodeFactory = createNodeFactory;
70-
71-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-qualifier
72-
ts.createNodeFactory = (flags, baseFactory) => {
73-
const factory = prevCreateNodeFactory(flags, baseFactory);
74-
patchNodeFactory(factory);
75-
return factory;
76-
};
68+
addNodeFactoryPatcher(patchNodeFactory);
7769

7870
// Patch `ts.factory` because its public
7971
patchNodeFactory(factory);
80-
}
72+
}

Diff for: src/deprecatedCompat/4.8/mergeDecoratorsAndModifiers.ts

+1-9
Original file line numberDiff line numberDiff line change
@@ -1397,15 +1397,7 @@ namespace ts {
13971397

13981398
// Patch `createNodeFactory` because it creates the factories that are provided to transformers
13991399
// in the public API.
1400-
1401-
const prevCreateNodeFactory = createNodeFactory;
1402-
1403-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-qualifier
1404-
ts.createNodeFactory = (flags, baseFactory) => {
1405-
const factory = prevCreateNodeFactory(flags, baseFactory);
1406-
patchNodeFactory(factory);
1407-
return factory;
1408-
};
1400+
addNodeFactoryPatcher(patchNodeFactory);
14091401

14101402
// Patch `ts.factory` because its public
14111403
patchNodeFactory(factory);

Diff for: src/tsserver/webServer.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
/*@internal*/
2-
3-
/// <reference lib="webworker" />
4-
52
namespace ts.server {
3+
declare const addEventListener: any;
4+
declare const postMessage: any;
5+
declare const close: any;
6+
declare const location: any;
7+
declare const XMLHttpRequest: any;
8+
declare const self: any;
9+
610
const nullLogger: Logger = {
711
close: noop,
812
hasLevel: returnFalse,

Diff for: src/webServer/webServer.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
/*@internal*/
2-
/// <reference lib="dom" />
3-
/// <reference lib="webworker.importscripts" />
42

53
namespace ts.server {
4+
declare const fetch: any;
5+
declare const importScripts: any;
6+
67
export interface HostWithWriteMessage {
78
writeMessage(s: any): void;
89
}
@@ -112,8 +113,6 @@ namespace ts.server {
112113
}
113114
}
114115

115-
export declare const dynamicImport: ((id: string) => Promise<any>) | undefined;
116-
117116
// Attempt to load `dynamicImport`
118117
if (typeof importScripts === "function") {
119118
try {
@@ -132,9 +131,10 @@ namespace ts.server {
132131
const getWebPath = (path: string) => startsWith(path, directorySeparator) ? path.replace(directorySeparator, getExecutingDirectoryPath()) : undefined;
133132

134133
const dynamicImport = async (id: string): Promise<any> => {
134+
const serverDynamicImport: ((id: string) => Promise<any>) | undefined = (server as any).dynamicImport;
135135
// Use syntactic dynamic import first, if available
136-
if (server.dynamicImport) {
137-
return server.dynamicImport(id);
136+
if (serverDynamicImport) {
137+
return serverDynamicImport(id);
138138
}
139139

140140
throw new Error("Dynamic import not implemented");

0 commit comments

Comments
 (0)