Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consume typescript apis from typescript nightly #1016

Merged
merged 7 commits into from Sep 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog

## v6.1.2
* [don't emit declaration files for a declaration file](https://github.com/TypeStrong/ts-loader/pull/1015) (#1014) - thanks @gvinaccia!
* [Consume typescript apis from typescript nightly](https://github.com/TypeStrong/ts-loader/pull/1016) - thanks @sheetalkamat!

## v6.1.1
* [Fix SolutionBuilder watches](https://github.com/TypeStrong/ts-loader/pull/1003) and [related fixes](https://github.com/TypeStrong/ts-loader/pull/1011) (#998) - thanks @sheetalkamat!
* [fix: no errors reported if flagged with @ts-check](https://github.com/TypeStrong/ts-loader/pull/1008) (#1004) - thanks @reinholdk!
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "ts-loader",
"version": "6.1.1",
"version": "6.1.2",
"description": "TypeScript loader for webpack",
"main": "index.js",
"types": "dist/types/index.d.ts",
Expand Down
13 changes: 11 additions & 2 deletions src/after-compile.ts
Expand Up @@ -357,6 +357,15 @@ function provideDeclarationFilesToWebpack(
}
}

function getOutputPathForBuildInfo(
compiler: typeof ts,
options: ts.CompilerOptions
) {
return (compiler as any).getTsBuildInfoEmitOutputFilePath
? (compiler as any).getTsBuildInfoEmitOutputFilePath(options)
: (compiler as any).getOutputPathForBuildInfo(options);
}

/**
* gather all .tsbuildinfo for the project
*/
Expand All @@ -375,8 +384,8 @@ function provideTsBuildInfoFilesToWebpack(
instance.modifiedFiles!.has(path.resolve(f))
)
) {
// TODO:: update compiler to expose this
const buildInfoPath = (instance.compiler as any).getOutputPathForBuildInfo(
const buildInfoPath = getOutputPathForBuildInfo(
instance.compiler,
resolvedRef.commandLine.options
);
if (buildInfoPath) {
Expand Down
11 changes: 8 additions & 3 deletions src/instances.ts
Expand Up @@ -490,8 +490,15 @@ function getOutputFileNames(
configFile: typescript.ParsedCommandLine,
inputFileName: string
): string[] {
const outputs: string[] = [];
const ignoreCase = !instance.compiler.sys.useCaseSensitiveFileNames;
if ((instance.compiler as any).getOutputFileNames) {
return (instance.compiler as any).getOutputFileNames(
configFile,
inputFileName,
ignoreCase
);
}
const outputs: string[] = [];
const addOutput = (fileName: string | undefined) =>
fileName && outputs.push(fileName);
const js = getOutputJSFileName(
Expand Down Expand Up @@ -539,8 +546,6 @@ function getOutputFilesFromReference(
!options.out &&
fileNames.some(file => path.normalize(file) === filePath)
) {
// TODO api in typescript
// For now copying from typescript
const outputFiles: typescript.OutputFile[] = [];
getOutputFileNames(
instance,
Expand Down
9 changes: 9 additions & 0 deletions test/comparison-tests/run-tests.js
Expand Up @@ -17,6 +17,9 @@ const saveOutputMode = process.argv.indexOf('--save-output') !== -1;
const indexOfSingleTest = process.argv.indexOf('--single-test');
const singleTestToRun =
indexOfSingleTest !== -1 && process.argv[indexOfSingleTest + 1];
const indexOfTestCriteria = process.argv.indexOf('--match-test');
const testCriteria =
indexOfTestCriteria !== -1 && new RegExp(process.argv[indexOfTestCriteria + 1]);

/** @type {string[]} */
let passingTests = [];
Expand Down Expand Up @@ -58,6 +61,12 @@ function runTests() {
const testPath = path.join(testDir, testName);
return fs.statSync(testPath).isDirectory();
}
)
.filter(
/**
* @param {string} testName
*/ testName =>
testCriteria ? !!testName.match(testCriteria) : true
);

// Allow multiple attempts to pass tests as they're flaky
Expand Down
9 changes: 9 additions & 0 deletions test/execution-tests/run-tests.js
Expand Up @@ -14,6 +14,9 @@ process.env.NODE_ENV = 'test';
var indexOfSingleTest = process.argv.indexOf('--single-test');
var singleTestToRun = indexOfSingleTest !== -1 && process.argv[indexOfSingleTest + 1];
var watch = process.argv.indexOf('--watch') !== -1 && !!singleTestToRun;
const indexOfTestCriteria = process.argv.indexOf('--match-test');
const testCriteria =
indexOfTestCriteria !== -1 && new RegExp(process.argv[indexOfTestCriteria + 1]);

var passingTests = [];
var failingTests = [];
Expand All @@ -32,6 +35,12 @@ else {
.filter(isTestDirectory)
.filter(isHighEnoughTypeScriptVersion)
.filter(isNotHappyPackTest)
.filter(
/**
* @param {string} testName
*/ testName =>
testCriteria ? !!testName.match(testCriteria) : true
)
// .filter(isNotBabelTest)
.forEach(runTests);
}
Expand Down
8 changes: 5 additions & 3 deletions test/run-tests.js
Expand Up @@ -4,8 +4,10 @@ var webpackVersion = require('webpack/package.json').version;
var typescript = require('typescript');
var execSync = require('child_process').execSync;

console.log('Using webpack version ' + webpackVersion);
const testArgs = process.argv.length > 2 ? ` -- ${process.argv.slice(2).join(" ")}` : "";

console.log('Using webpack version --' + webpackVersion);
console.log('Using typescript version ' + typescript.version);

execSync('yarn run comparison-tests', { stdio: 'inherit' });
execSync('yarn run execution-tests', { stdio: 'inherit' });
execSync(`yarn run comparison-tests${testArgs}`, { stdio: 'inherit' });
execSync(`yarn run execution-tests${testArgs}`, { stdio: 'inherit' });