Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## 9.6.2
* [chore: trim runtime dependencies — remove enhanced-resolve/semver, swap micromatch → picomatch](https://github.com/TypeStrong/ts-loader/pull/1701) - thanks @johnnyreilly

## 9.6.1
* [fix: rspack support](https://github.com/TypeStrong/ts-loader/pull/1699) - thanks @johnnyreilly and @bhollis

Expand Down
11 changes: 4 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ts-loader",
"version": "9.6.1",
"version": "9.6.2",
"description": "TypeScript loader for webpack",
"main": "index.js",
"types": "dist",
Expand Down Expand Up @@ -54,16 +54,13 @@
"homepage": "https://github.com/TypeStrong/ts-loader",
"dependencies": {
"chalk": "^4.1.0",
"enhanced-resolve": "^5.0.0",
"micromatch": "^4.0.0",
"semver": "^7.3.4",
"picomatch": "^4.0.0",
"source-map": "^0.7.4"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/micromatch": "^4.0.0",
"@types/node": "*",
"@types/semver": "^7.3.4",
"@types/node": "^26.0.0",
"@types/picomatch": "^4.0.0",
"babel": "^6.0.0",
"babel-core": "^6.0.0",
"babel-loader": "^7.0.0",
Expand Down
14 changes: 2 additions & 12 deletions src/compilerSetup.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import * as semver from 'semver';
import type typescript from 'typescript';

import type { LoaderOptions } from './interfaces';
Expand All @@ -25,17 +24,8 @@ export function getCompiler(loaderOptions: LoaderOptions, log: logger.Logger) {
}`;
compilerCompatible = false;
if (loaderOptions.compiler === 'typescript') {
if (
compiler!.version !== undefined &&
semver.gte(compiler!.version, '3.6.3')
) {
// don't log yet in this case, if a tsconfig.json exists we want to combine the message
compilerCompatible = true;
} else {
log.logError(
`${compilerDetailsLogMessage}. This version is incompatible with ts-loader. Please upgrade to the latest version of TypeScript.`
);
}
// don't log yet in this case, if a tsconfig.json exists we want to combine the message
compilerCompatible = true;
} else {
log.logWarning(
`${compilerDetailsLogMessage}. This version may or may not be compatible with ts-loader.`
Expand Down
2 changes: 0 additions & 2 deletions src/resolver.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import type * as webpack from 'webpack';

import { create as _create } from 'enhanced-resolve';

export function makeResolver(
_options: webpack.WebpackOptionsNormalized
): ResolveSync {
Expand Down
45 changes: 33 additions & 12 deletions src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Chalk } from 'chalk';
import * as fs from 'fs';
import micromatch from 'micromatch';
import picomatch from 'picomatch';
import * as path from 'path';
import * as webpack from 'webpack';
import type typescript from 'typescript';
Expand Down Expand Up @@ -50,26 +50,46 @@ export function formatErrors(
merge: { file?: string; module?: webpack.Module },
context: string
): webpack.WebpackError[] {
// Split positive and negative patterns to replicate micromatch semantics:
Comment thread
johnnyreilly marked this conversation as resolved.
Outdated
// a file must match a positive pattern AND not match any negative pattern.
const { positivePatterns, negativePatterns } =
loaderOptions.reportFiles.reduce<{
positivePatterns: string[];
negativePatterns: string[];
}>(
(acc, p) => {
if (p.startsWith('!')) {
acc.negativePatterns.push(p.slice(1));
} else {
acc.positivePatterns.push(p);
}
return acc;
},
{ positivePatterns: [], negativePatterns: [] }
);
const matchPos =
loaderOptions.reportFiles.length > 0
? picomatch(positivePatterns.length > 0 ? positivePatterns : ['**'])
: null;
const matchNeg =
negativePatterns.length > 0 ? picomatch(negativePatterns) : null;

return diagnostics === undefined
? []
: diagnostics
.filter(diagnostic => {
if (loaderOptions.ignoreDiagnostics.indexOf(diagnostic.code) !== -1) {
return false;
}
if (
loaderOptions.reportFiles.length > 0 &&
diagnostic.file !== undefined
) {
if (matchPos !== null && diagnostic.file !== undefined) {
const relativeFileName = path.relative(
context,
diagnostic.file.fileName
);
const matchResult = micromatch(
[relativeFileName],
loaderOptions.reportFiles
);
if (matchResult.length === 0) {
if (
!matchPos(relativeFileName) ||
(matchNeg && matchNeg(relativeFileName))
) {
return false;
}
}
Expand Down Expand Up @@ -163,7 +183,7 @@ export function makeError(
error.details = tsLoaderSource(loaderOptions);

return error;
}
}

return {
message,
Expand Down Expand Up @@ -316,7 +336,8 @@ export function ensureProgram(instance: TSInstance) {
instance.watchHost.updateRootFileNames();
}
if (instance.watchOfFilesAndCompilerOptions) {
instance.builderProgram = instance.watchOfFilesAndCompilerOptions.getProgram();
instance.builderProgram =
instance.watchOfFilesAndCompilerOptions.getProgram();
instance.program = instance.builderProgram.getProgram();
}
instance.hasUnaccountedModifiedFiles = false;
Expand Down
59 changes: 23 additions & 36 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,6 @@
dependencies:
any-observable "^0.3.0"

"@types/braces@*":
version "2.3.0"
resolved "https://registry.npmjs.org/@types/braces/-/braces-2.3.0.tgz"
integrity sha512-A3MV5EsLHgShHoJ/XES/fQAnwNISKLrFuH9eNBZY5OkTQB7JPIwbRoExvRpDsNABvkMojnKqKWS8x0m2rLYi+A==

"@types/component-emitter@^1.2.10":
version "1.2.10"
resolved "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz"
Expand Down Expand Up @@ -190,24 +185,24 @@
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==

"@types/micromatch@^4.0.0":
version "4.0.1"
resolved "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.1.tgz"
integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw==
dependencies:
"@types/braces" "*"

"@types/node@*", "@types/node@>=10.0.0":
version "24.3.0"
resolved "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz"
integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==
dependencies:
undici-types "~7.10.0"

"@types/semver@^7.3.4":
version "7.7.1"
resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz"
integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==
"@types/node@^26.0.0":
version "26.0.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.0.tgz#d4aece9e9412e9f2008d59bc2d74f5279316b665"
integrity sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==
dependencies:
undici-types "~8.3.0"

"@types/picomatch@^4.0.0":
version "4.0.3"
resolved "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.3.tgz"
integrity sha512-iG0T6+nYJ9FAPmx9SsUlnwcq1ZVRuCXcVEvWnntoPlrOpwtSTKNDC9uVAxTsC3PUvJ+99n4RpAcNgBbHX3JSnQ==

"@typescript-eslint/eslint-plugin@8.59.4":
version "8.59.4"
Expand Down Expand Up @@ -1313,7 +1308,7 @@ braces@^2.3.1:
split-string "^3.0.2"
to-regex "^3.0.1"

braces@^3.0.2, braces@^3.0.3, braces@~3.0.2:
braces@^3.0.2, braces@~3.0.2:
version "3.0.3"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
Expand Down Expand Up @@ -1885,7 +1880,7 @@ engine.io@~6.2.0:
engine.io-parser "~5.0.3"
ws "~8.2.3"

enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.3:
enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.3:
version "5.22.0"
resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz"
integrity sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==
Expand Down Expand Up @@ -2391,7 +2386,7 @@ fs.realpath@^1.0.0:

fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==

function-bind@^1.1.1:
Expand Down Expand Up @@ -2646,12 +2641,7 @@ iconv-lite@0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"

ignore@^5.2.0:
version "5.2.4"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==

ignore@^5.3.2:
ignore@^5.2.0, ignore@^5.3.2:
version "5.3.2"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
Expand Down Expand Up @@ -3490,14 +3480,6 @@ micromatch@^3.1.8:
snapdragon "^0.8.1"
to-regex "^3.0.2"

micromatch@^4.0.0:
version "4.0.8"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
braces "^3.0.3"
picomatch "^2.3.1"

mime-db@1.46.0:
version "1.46.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz"
Expand Down Expand Up @@ -3957,12 +3939,12 @@ picocolors@^1.1.1:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==

picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.2"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz"
integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==

picomatch@^4.0.2, picomatch@^4.0.4:
picomatch@^4.0.0, picomatch@^4.0.2, picomatch@^4.0.4:
version "4.0.4"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz"
integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==
Expand Down Expand Up @@ -4345,7 +4327,7 @@ semver@^5.7.0:
resolved "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz"
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==

semver@^7.3.4, semver@^7.5.4, semver@^7.6.3, semver@^7.7.3:
semver@^7.5.4, semver@^7.6.3, semver@^7.7.3:
version "7.8.1"
resolved "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz"
integrity sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==
Expand Down Expand Up @@ -4888,6 +4870,11 @@ undici-types@~7.10.0:
resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz"
integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==

undici-types@~8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809"
integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==

union-value@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"
Expand Down
Loading