Skip to content

Commit ed9f3da

Browse files
committed
Add function to get the latest program
1 parent 55d2a85 commit ed9f3da

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## v9.2.5
4+
5+
* [Add function to get the latest program](https://github.com/TypeStrong/ts-loader/pull/1352) - thanks @Zn4rk
6+
37
## v9.2.4
48

59
* [Fix undefined configPath now falls back to default](https://github.com/TypeStrong/ts-loader/pull/1346) - thanks @johnnyreilly

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ts-loader",
3-
"version": "9.2.4",
3+
"version": "9.2.5",
44
"description": "TypeScript loader for webpack",
55
"main": "index.js",
66
"types": "dist",

src/instances.ts

+10-6
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,8 @@ export function initializeInstance(
377377
})
378378
: instance.compiler.createProgram([], instance.compilerOptions));
379379

380-
instance.transformers = getCustomTransformers(program);
380+
const getProgram = () => program;
381+
instance.transformers = getCustomTransformers(program, getProgram);
381382
// Setup watch run for solution building
382383
if (instance.solutionBuilderHost) {
383384
addAssetHooks(loader, instance);
@@ -407,9 +408,13 @@ export function initializeInstance(
407408
instance.compiler.createWatchProgram(instance.watchHost);
408409
instance.builderProgram =
409410
instance.watchOfFilesAndCompilerOptions.getProgram();
410-
instance.program = instance.builderProgram.getProgram();
411411

412-
instance.transformers = getCustomTransformers(instance.program);
412+
const getProgram = () => instance.builderProgram?.getProgram();
413+
instance.program = getProgram();
414+
instance.transformers = getCustomTransformers(
415+
instance.program,
416+
getProgram
417+
);
413418
} else {
414419
instance.servicesHost = makeServicesHost(
415420
getScriptRegexp(instance),
@@ -423,9 +428,8 @@ export function initializeInstance(
423428
instance.compiler.createDocumentRegistry()
424429
);
425430

426-
instance.transformers = getCustomTransformers(
427-
instance.languageService!.getProgram()
428-
);
431+
const getProgram = () => instance.languageService!.getProgram();
432+
instance.transformers = getCustomTransformers(getProgram(), getProgram);
429433
}
430434

431435
addAssetHooks(loader, instance);

src/interfaces.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@ export interface LoaderOptions {
270270
getCustomTransformers:
271271
| string
272272
| ((
273-
program: typescript.Program
273+
program: typescript.Program,
274+
getProgram: () => typescript.Program
274275
) => typescript.CustomTransformers | undefined);
275276
experimentalWatchApi: boolean;
276277
allowTsInNodeModules: boolean;

0 commit comments

Comments
 (0)