@d1g1tal/tsbuild 1.6.4 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +110 -0
- package/README.md +23 -7
- package/dist/{GQLOAEUW.js → GNBUFD72.js} +1 -1
- package/dist/{LQR6E3EH.js → QNWF5BZL.js} +16 -52
- package/dist/{7FPDHUPW.js → YC2FB45E.js} +1 -2
- package/dist/index.d.ts +6 -4
- package/dist/index.js +2 -2
- package/dist/tsbuild.js +3 -3
- package/package.json +16 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,113 @@
|
|
|
1
|
+
## [1.7.0](https://github.com/D1g1talEntr0py/tsbuild/compare/v1.6.5...v1.7.0) (2026-03-27)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **build:** add support for ES2025 ScriptTarget (2aecca9dc4ac67cd3e27021e34054a7c7552ebe9)
|
|
6
|
+
- Add `ES2025` targeting map for TS `ScriptTarget.ES2025` so newly produced esbuild configurations will honor it.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **dts:** infer reference types for node protocols and correct module mapping (03c4ec5859b3741b7f30d590b38ea9c729128eea)
|
|
12
|
+
- Add logic in the `DeclarationBundler` to automatically infer `/// <reference types="node" />` when `node:` protocol imports are merged in, so the generated `.d.ts` file remains self-contained.
|
|
13
|
+
- Stop stripping inline `type` keywords from import statements in the `DeclarationProcessor`, preserving them for `.d.ts` output correctness.
|
|
14
|
+
- Remove unused `inlineTypePattern` import due to removing the stripping logic.
|
|
15
|
+
- Fix minor property initialization order formatting in `DeclarationBundler`.
|
|
16
|
+
- Add testing specific to these fixes in `declaration-bundler.test.ts` and `declaration-processor.test.ts`.
|
|
17
|
+
|
|
18
|
+
* **env:** support dynamic process.env extraction in config values (9469b5963d9ac5c1473bf500e96baa841b04b586)
|
|
19
|
+
- Expand `process.env` references dynamically in ESBuild `define` objects to support runtime-bound values instead of just static strings.
|
|
20
|
+
|
|
21
|
+
* **release:** manually update the workspace file since pnpm can't seem to get it right (8795a7497ab9cc26991001ef09145f8d92097841)
|
|
22
|
+
|
|
23
|
+
### Code Refactoring
|
|
24
|
+
|
|
25
|
+
* **core:** simplify promise handling in TypeScript build configuration (e7b154ad9cf38347bf93cb3a48301753cead58e0)
|
|
26
|
+
- Remove intermediate `entryPointsPromise` variable and `.catch()` swallowing since rejection is natively handled when awaited later in the `build()` process.
|
|
27
|
+
- Improve the `tsbuildOptions` setup.
|
|
28
|
+
|
|
29
|
+
* **style:** remove explicit return types and clean up syntax (c306735aefb8ff4d4227f5bdaae21e7d0ed53f32)
|
|
30
|
+
- Remove redundant explicit return types from internal utility functions across several files (`constants`, `decorators`, `dts`, `file-manager`, `files`, `json`, `logger`, `paths`, etc.).
|
|
31
|
+
- Allow TypeScript to infer these return types automatically, reducing visual noise.
|
|
32
|
+
- Simplify closures to arrow functions or shortened arrow syntax where applicable.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Documentation
|
|
36
|
+
|
|
37
|
+
* **EADDRINUSE:** add issue draft for WSL2 network issue (5f5ea0d31f6df8e85a4e586c5f8018a56e5b2702)
|
|
38
|
+
- Add a detailed bug report draft describing the `EADDRINUSE` issue that occurs on every single activation attempt when running under WSL2 with `networkingMode=Mirrored`.
|
|
39
|
+
- Include a minimal reproduction case that demonstrates the underlying Node.js `net.createServer().listen()` race condition in WSL2 mirrored networking.
|
|
40
|
+
- Provide expected behavior and output logs for the VS Code extension failure.
|
|
41
|
+
- Suggest a direct bind and instance retention fix instead of the current close-and-reopen approach.
|
|
42
|
+
|
|
43
|
+
* **README:** update isolatedModules and TS strict requirements (c4a491791b8ad9d90c909ce9a2f8d03e1aeb0521)
|
|
44
|
+
- Update the minimum supported TypeScript badge to `>=5.6.3`.
|
|
45
|
+
- Clarify that `isolatedModules` is strictly required due to the reliance on esbuild for transpilation.
|
|
46
|
+
- Remove the `strict` option note for newer TS versions since it is enabled by default in TypeScript 6.0+.
|
|
47
|
+
- Add an "Advanced Features" section explicitly explaining *why* `isolatedModules` is necessary for esbuild.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Miscellaneous Chores
|
|
51
|
+
|
|
52
|
+
* **deps:** update package and lockfile dependencies (5a9f0623ffc63b42ddcdd7d2bc1882510f0a7d60)
|
|
53
|
+
- Update various devDependencies, including `typescript` to `^6.0.2` and related `@typescript-eslint` packages.
|
|
54
|
+
- Update `vitest` and coverage plugins to `^4.1.2`.
|
|
55
|
+
- Remove `@babel/plugin-proposal-decorators` and `@rolldown/plugin-babel` and replace Babel decorator handling in vitest config with a custom `esbuild` transformer.
|
|
56
|
+
- Add a `test:compat` script entry to test against 5 minor versions of TypeScript.
|
|
57
|
+
- Specify a peer dependency requirement for `typescript: >=5.6.3`.
|
|
58
|
+
- Modify `package.json` `types` field.
|
|
59
|
+
- Refresh and resolve `pnpm-lock.yaml` according to the new dependency state.
|
|
60
|
+
|
|
61
|
+
* **vscode:** set TS SDK path in settings (6e6622483d6648ba6cf283b362622665bd1dbede)
|
|
62
|
+
- Configure `.vscode/settings.json` to use the workspace `node_modules/typescript/lib` for the TypeScript language server.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### Tests
|
|
66
|
+
|
|
67
|
+
* **compat:** introduce multi-version TypeScript testing script (3ad98b8cc914d6e7c37237713b11568e97ef1bbf)
|
|
68
|
+
- Add a new compatibility test script `test-ts-compat.ts` that iterates through minor TypeScript versions dynamically.
|
|
69
|
+
- Conditionally add support for testing `ES2024` and `ES2025` script targets only if the installed version of TS contains them.
|
|
70
|
+
- Implement a comprehensive type-guard/API compatibility test in `typescript-compatibility.test.ts` to guarantee runtime API availability.
|
|
71
|
+
- Update `tsconfig.json` for tests with required strict compatibility changes.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Continuous Integration
|
|
75
|
+
|
|
76
|
+
* **github:** add workflow for testing TypeScript compatibility (0c9bbbf8301ad66c4321fa9878169d66bbb1eda7)
|
|
77
|
+
- Create a new GitHub Actions workflow to run the test suite against multiple versions of TypeScript (5.6.3 to 6.0).
|
|
78
|
+
- Ensure backwards compatibility of the tools when run with older minimal supported TypeScript versions.
|
|
79
|
+
- Set up basic jobs utilizing `pnpm` and Node.js 24.
|
|
80
|
+
|
|
81
|
+
## [1.6.5](https://github.com/D1g1talEntr0py/tsbuild/compare/v1.6.4...v1.6.5) (2026-03-21)
|
|
82
|
+
|
|
83
|
+
### Code Refactoring
|
|
84
|
+
|
|
85
|
+
* **bundler:** remove unused getModuleExports method (40be90ce03de5ada924ac6ac5d0966cceda7ade1)
|
|
86
|
+
- Remove dead private method getModuleExports from DeclarationBundler class
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### Tests
|
|
90
|
+
|
|
91
|
+
* add json, incremental-build-cache tests and shared declaration fixtures (dadea76ceb2fa487124031bbef2b2532195a60dd)
|
|
92
|
+
- Add comprehensive tests for Json.parse and Json.serialize with primitives, arrays, and objects
|
|
93
|
+
- Add tests for IncrementalBuildCache covering restore, save, invalidate, isBuildInfoFile, and isValid
|
|
94
|
+
- Add tests for corrupt cache file handling, cache invalidation skipping restore, and round-trip save/restore
|
|
95
|
+
- Add shared declaration fixture file with reusable type definitions for bundler and processor tests
|
|
96
|
+
- Remove old build-cache.test.ts in favor of new incremental-build-cache.test.ts
|
|
97
|
+
|
|
98
|
+
* rewrite test suite with parameterized patterns and expanded coverage (dd30d901a7bcffcf743ae7bb91d6309377cdb49d)
|
|
99
|
+
- Rewrite text-formatter tests with it.each matrix patterns for formatting, color, bright, background, and bright background categories
|
|
100
|
+
- Rewrite paths tests with it.each matrix for isPath, add parse and isFile coverage, remove TestHelper boilerplate
|
|
101
|
+
- Rewrite logger tests with it.each matrices for isWrittenFiles/colorize/prettyBytes, remove memfs dependency, add header/separator/step/subSteps/EntryType tests
|
|
102
|
+
- Rewrite decorator-metadata plugin tests removing TestHelper dependency, simplify mock setup
|
|
103
|
+
- Rewrite external-modules plugin tests with it.each for bare specifiers and local paths, add packageName extraction tests
|
|
104
|
+
- Rewrite output plugin tests, add rewriteRelativeSpecifiers unit tests for extension-less and bare specifier handling
|
|
105
|
+
- Simplify process-manager tests by condensing redundant assertions and removing duplicate spy verifications
|
|
106
|
+
- Rewrite tsbuild CLI tests with it.each for --help/-h and --version/-v flags, group into describe blocks
|
|
107
|
+
- Expand type-script-project tests with triggerRebuild (rename, unlink, empty changes), close, handleBuildError (watch mode), resolveConfiguration (browser platform, entry point inference, invalid tsconfig, malformed package.json), getEntryPoints, and transpile (env expansion, esbuild warnings/errors, SWC decorator metadata plugin)
|
|
108
|
+
- Streamline integration tests with condensed fixtures and consistent Logger mock formatting
|
|
109
|
+
- Rewrite constants, declaration-bundler, declaration-processor, decorator, entry-points, errors, file-manager, and files tests with simplified patterns
|
|
110
|
+
|
|
1
111
|
## [1.6.4](https://github.com/D1g1talEntr0py/tsbuild/compare/v1.6.3...v1.6.4) (2026-03-21)
|
|
2
112
|
|
|
3
113
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://codecov.io/gh/D1g1talEntr0py/tsbuild)
|
|
7
7
|
[](https://github.com/D1g1talEntr0py/tsbuild/blob/main/LICENSE)
|
|
8
8
|
[](https://nodejs.org)
|
|
9
|
-
[](https://www.typescriptlang.org/)
|
|
10
10
|
|
|
11
11
|
A TypeScript build tool that combines three tools into one workflow: **TypeScript's type system** for correctness, **esbuild** for speed, and **SWC** for legacy decorator metadata (optional, not installed by default). Built for modern ESM-only projects on Node.js 22+.
|
|
12
12
|
|
|
@@ -125,8 +125,7 @@ By default, bare specifiers (e.g. `lodash-es`) are kept as external imports. Use
|
|
|
125
125
|
"outDir": "./dist",
|
|
126
126
|
"declaration": true,
|
|
127
127
|
"incremental": true, // redundant — tsbuild enables this by default, but explicit is clear
|
|
128
|
-
"
|
|
129
|
-
"isolatedModules": true,
|
|
128
|
+
"isolatedModules": true, // required — flags constructs esbuild can't safely transpile
|
|
130
129
|
"verbatimModuleSyntax": true,
|
|
131
130
|
"strict": true,
|
|
132
131
|
"target": "ESNext",
|
|
@@ -149,11 +148,10 @@ Set `incremental: false` to opt out of the `.tsbuildinfo` cache entirely. Every
|
|
|
149
148
|
"compilerOptions": {
|
|
150
149
|
"outDir": "./dist",
|
|
151
150
|
"declaration": true,
|
|
152
|
-
"incremental": false,
|
|
153
|
-
"
|
|
154
|
-
"isolatedModules": true,
|
|
151
|
+
"incremental": false, // disables TypeScript's .tsbuildinfo cache and tsbuild's DTS cache
|
|
152
|
+
"isolatedModules": true, // required — flags constructs esbuild can't safely transpile
|
|
155
153
|
"verbatimModuleSyntax": true,
|
|
156
|
-
"strict": true,
|
|
154
|
+
"strict": true, // Not needed with TypeScript 6 and above, since strict mode is enabled by default
|
|
157
155
|
"target": "ESNext",
|
|
158
156
|
"module": "ESNext",
|
|
159
157
|
"moduleResolution": "Bundler", // recommended for library builds processed by a bundler
|
|
@@ -429,6 +427,24 @@ By default, bare specifiers (e.g., `lodash`) are treated as external when `platf
|
|
|
429
427
|
|
|
430
428
|
## Advanced Features
|
|
431
429
|
|
|
430
|
+
### Isolated Modules
|
|
431
|
+
|
|
432
|
+
Because tsbuild uses esbuild for transpilation, and esbuild processes each file independently without a full type graph, you should set `isolatedModules: true` in your `tsconfig.json`:
|
|
433
|
+
|
|
434
|
+
```jsonc
|
|
435
|
+
{
|
|
436
|
+
"compilerOptions": {
|
|
437
|
+
"isolatedModules": true
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
This tells TypeScript to flag any construct that requires cross-file knowledge to transpile correctly — things like `const enum`, ambient module augmentation, or re-exporting a type without the `type` keyword. Without this, esbuild may encounter one of these patterns and silently emit incorrect code, since it has no way to identify the problem at transpile time.
|
|
443
|
+
|
|
444
|
+
With `isolatedModules: true`, TypeScript catches these issues during the type-check phase, before esbuild runs, so you get a clear error instead of a subtle runtime bug.
|
|
445
|
+
|
|
446
|
+
**`verbatimModuleSyntax` implies `isolatedModules`:** If you have `verbatimModuleSyntax: true` in your config, it already enforces all of `isolatedModules` and goes further by requiring `import type` for all type-only imports. If you're using `verbatimModuleSyntax`, adding `isolatedModules` is redundant but harmless.
|
|
447
|
+
|
|
432
448
|
### Decorator Metadata
|
|
433
449
|
|
|
434
450
|
#### TC39 Standard Decorators (recommended)
|
|
@@ -22,14 +22,13 @@ import {
|
|
|
22
22
|
dtsCacheFile,
|
|
23
23
|
dtsCacheVersion,
|
|
24
24
|
format,
|
|
25
|
-
inlineTypePattern,
|
|
26
25
|
newLine,
|
|
27
26
|
processEnvExpansionPattern,
|
|
28
27
|
sourceScriptExtensionExpression,
|
|
29
28
|
toEsTarget,
|
|
30
29
|
toJsxRenderingMode,
|
|
31
30
|
typeMatcher
|
|
32
|
-
} from "./
|
|
31
|
+
} from "./YC2FB45E.js";
|
|
33
32
|
|
|
34
33
|
// src/errors.ts
|
|
35
34
|
import { SyntaxKind } from "typescript";
|
|
@@ -614,29 +613,7 @@ var DeclarationProcessor = class _DeclarationProcessor {
|
|
|
614
613
|
return length;
|
|
615
614
|
}
|
|
616
615
|
for (const node of sourceFile.statements) {
|
|
617
|
-
if (
|
|
618
|
-
if (node.importClause?.phaseModifier === SyntaxKind2.TypeKeyword) {
|
|
619
|
-
const importKeywordEnd = node.getStart() + "import".length;
|
|
620
|
-
const typeMatch = code.slice(importKeywordEnd, node.getEnd()).match(typeMatcher);
|
|
621
|
-
if (typeMatch?.index !== void 0) {
|
|
622
|
-
const typeKeywordStart = importKeywordEnd + typeMatch.index;
|
|
623
|
-
const typeKeywordEnd = typeKeywordStart + "type".length;
|
|
624
|
-
code.remove(typeKeywordStart, typeKeywordEnd + getTrailingWhitespaceLength(typeKeywordEnd, node.getEnd()));
|
|
625
|
-
}
|
|
626
|
-
} else {
|
|
627
|
-
inlineTypePattern.lastIndex = 0;
|
|
628
|
-
let match;
|
|
629
|
-
const replacements = [];
|
|
630
|
-
while ((match = inlineTypePattern.exec(code.slice(node.getStart(), node.getEnd()))) !== null) {
|
|
631
|
-
const typeKeywordStart = node.getStart() + match.index + match[1].length;
|
|
632
|
-
const typeKeywordEnd = typeKeywordStart + "type".length;
|
|
633
|
-
replacements.push({ start: typeKeywordStart, end: typeKeywordEnd + getTrailingWhitespaceLength(typeKeywordEnd, node.getEnd()) });
|
|
634
|
-
}
|
|
635
|
-
for (let i = replacements.length - 1; i >= 0; i--) {
|
|
636
|
-
code.remove(replacements[i].start, replacements[i].end);
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
} else if (isExportDeclaration(node)) {
|
|
616
|
+
if (isExportDeclaration(node)) {
|
|
640
617
|
if (node.exportClause && isNamedExports(node.exportClause) && node.exportClause.elements.length === 0 && !node.moduleSpecifier) {
|
|
641
618
|
code.remove(getStart(node), getEnd(node));
|
|
642
619
|
} else if (node.isTypeOnly) {
|
|
@@ -1295,9 +1272,15 @@ var DeclarationBundler = class {
|
|
|
1295
1272
|
codeBlocks.push(strippedCode.trim());
|
|
1296
1273
|
}
|
|
1297
1274
|
}
|
|
1298
|
-
const
|
|
1275
|
+
const typeReferencesSet = new Set(allTypeReferences);
|
|
1299
1276
|
const uniqueFileReferences = [...new Set(allFileReferences)];
|
|
1300
1277
|
const mergedExternalImports = mergeImports(allExternalImports);
|
|
1278
|
+
for (const imp of mergedExternalImports) {
|
|
1279
|
+
if (imp.includes('"node:') || imp.includes("'node:")) {
|
|
1280
|
+
typeReferencesSet.add("node");
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
const uniqueTypeReferences = [...typeReferencesSet];
|
|
1301
1284
|
const finalValueExports = [...new Set(allValueExports)];
|
|
1302
1285
|
const finalValueExportsSet = new Set(finalValueExports);
|
|
1303
1286
|
const finalTypeExports = [...new Set(allTypeExports.filter((typeExport) => !finalValueExportsSet.has(typeExport)))];
|
|
@@ -1323,22 +1306,6 @@ var DeclarationBundler = class {
|
|
|
1323
1306
|
}
|
|
1324
1307
|
return { code: outputParts.join(newLine), exports: [...finalTypeExports, ...finalValueExports], allDeclarations };
|
|
1325
1308
|
}
|
|
1326
|
-
/**
|
|
1327
|
-
* Extract exported names from a processed source file
|
|
1328
|
-
* @param processedSourceFile - The processed source file
|
|
1329
|
-
* @returns Array of exported names
|
|
1330
|
-
*/
|
|
1331
|
-
getModuleExports(processedSourceFile) {
|
|
1332
|
-
const exports = [];
|
|
1333
|
-
for (const statement of processedSourceFile.statements) {
|
|
1334
|
-
if (isExportDeclaration2(statement) && statement.exportClause && isNamedExports2(statement.exportClause)) {
|
|
1335
|
-
for (const element of statement.exportClause.elements) {
|
|
1336
|
-
exports.push(element.name.text);
|
|
1337
|
-
}
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
return exports;
|
|
1341
|
-
}
|
|
1342
1309
|
/**
|
|
1343
1310
|
* Main bundling orchestration method
|
|
1344
1311
|
* @param entryPoint - The entry point file path
|
|
@@ -2116,6 +2083,7 @@ import { performance as performance2 } from "node:perf_hooks";
|
|
|
2116
2083
|
import { sys as sys2, createIncrementalProgram, formatDiagnostics, formatDiagnosticsWithColorAndContext, parseJsonConfigFileContent, readConfigFile, findConfigFile } from "typescript";
|
|
2117
2084
|
var globCharacters = /[*?\\[\]!].*$/;
|
|
2118
2085
|
var domPredicate = (lib) => lib.toUpperCase() === "DOM";
|
|
2086
|
+
var tsLogo = TextFormat.bgBlue(TextFormat.bold(TextFormat.whiteBright(" TS ")));
|
|
2119
2087
|
var diagnosticsHost = { getNewLine: () => sys2.newLine, getCurrentDirectory: sys2.getCurrentDirectory, getCanonicalFileName: (fileName) => fileName };
|
|
2120
2088
|
var _triggerRebuild_dec, _processDeclarations_dec, _transpile_dec, _typeCheck_dec, _build_dec, _TypeScriptProject_decorators, _init3;
|
|
2121
2089
|
_TypeScriptProject_decorators = [closeOnExit], _build_dec = [measure("Build")], _typeCheck_dec = [measure("Type-checking")], _transpile_dec = [measure("Transpile", true)], _processDeclarations_dec = [measure("Bundle Declarations", true)], _triggerRebuild_dec = [debounce(100)];
|
|
@@ -2144,10 +2112,7 @@ var _TypeScriptProject = class _TypeScriptProject {
|
|
|
2144
2112
|
}
|
|
2145
2113
|
this.fileManager = new FileManager(buildCache);
|
|
2146
2114
|
this.builderProgram = createIncrementalProgram({ rootNames, options: this.configuration.compilerOptions, projectReferences, configFileParsingDiagnostics });
|
|
2147
|
-
|
|
2148
|
-
entryPointsPromise.catch(() => {
|
|
2149
|
-
});
|
|
2150
|
-
this.buildConfiguration = { entryPoints: entryPointsPromise, target: toEsTarget(target), outDir, ...tsbuildOptions };
|
|
2115
|
+
this.buildConfiguration = { entryPoints: this.getEntryPoints(entryPoints), target: toEsTarget(target), outDir, ...tsbuildOptions };
|
|
2151
2116
|
}
|
|
2152
2117
|
/**
|
|
2153
2118
|
* Cleans the output directory
|
|
@@ -2157,8 +2122,7 @@ var _TypeScriptProject = class _TypeScriptProject {
|
|
|
2157
2122
|
return Files.empty(this.buildConfiguration.outDir);
|
|
2158
2123
|
}
|
|
2159
2124
|
async build() {
|
|
2160
|
-
|
|
2161
|
-
Logger.header(`${tsLogo} tsbuild v${"1.6.4"}${this.configuration.compilerOptions.incremental && this.configuration.buildCache?.isValid() ? " [incremental]" : ""}`);
|
|
2125
|
+
Logger.header(`${tsLogo} tsbuild v${"1.7.0"}${this.configuration.compilerOptions.incremental && this.configuration.buildCache?.isValid() ? " [incremental]" : ""}`);
|
|
2162
2126
|
try {
|
|
2163
2127
|
const processes = [];
|
|
2164
2128
|
const filesWereEmitted = await this.typeCheck();
|
|
@@ -2217,7 +2181,7 @@ var _TypeScriptProject = class _TypeScriptProject {
|
|
|
2217
2181
|
}
|
|
2218
2182
|
if (this.configuration.compilerOptions.emitDecoratorMetadata) {
|
|
2219
2183
|
try {
|
|
2220
|
-
const { swcDecoratorMetadataPlugin } = await import("./
|
|
2184
|
+
const { swcDecoratorMetadataPlugin } = await import("./GNBUFD72.js");
|
|
2221
2185
|
plugins.push(swcDecoratorMetadataPlugin);
|
|
2222
2186
|
} catch {
|
|
2223
2187
|
throw new ConfigurationError("emitDecoratorMetadata is enabled but @swc/core is not installed. Install it with: pnpm add -D @swc/core");
|
|
@@ -2549,10 +2513,10 @@ var _TypeScriptProject = class _TypeScriptProject {
|
|
|
2549
2513
|
* @returns Elapsed time in milliseconds
|
|
2550
2514
|
*/
|
|
2551
2515
|
static elapsed(markName) {
|
|
2552
|
-
const
|
|
2553
|
-
const ms = ~~(
|
|
2516
|
+
const { name, startTime } = performance2.mark(`${markName}:end`);
|
|
2517
|
+
const ms = ~~(startTime - performance2.getEntriesByName(markName, "mark")[0].startTime);
|
|
2554
2518
|
performance2.clearMarks(markName);
|
|
2555
|
-
performance2.clearMarks(
|
|
2519
|
+
performance2.clearMarks(name);
|
|
2556
2520
|
return ms;
|
|
2557
2521
|
}
|
|
2558
2522
|
};
|
|
@@ -81,6 +81,7 @@ var scriptTargetToEsTarget = {
|
|
|
81
81
|
[ScriptTarget.ES2022]: "ES2022",
|
|
82
82
|
[ScriptTarget.ES2023]: "ES2023",
|
|
83
83
|
[ScriptTarget.ES2024]: "ES2024",
|
|
84
|
+
[ScriptTarget.ES2025]: "ES2025",
|
|
84
85
|
[ScriptTarget.ESNext]: "ESNext",
|
|
85
86
|
[ScriptTarget.JSON]: "ESNext"
|
|
86
87
|
};
|
|
@@ -119,7 +120,6 @@ var typeMatcher = /\btype\b/;
|
|
|
119
120
|
var sourceScriptExtensionExpression = /(?<!\.d)\.[jt]sx?$/;
|
|
120
121
|
var typeScriptExtensionExpression = /(\.tsx?)$/;
|
|
121
122
|
var processEnvExpansionPattern = /\$\{process\.env\.([^}]+)\}/g;
|
|
122
|
-
var inlineTypePattern = /([{,]\s+)type\s+/g;
|
|
123
123
|
|
|
124
124
|
// src/paths.ts
|
|
125
125
|
import { lstat } from "node:fs/promises";
|
|
@@ -279,7 +279,6 @@ export {
|
|
|
279
279
|
sourceScriptExtensionExpression,
|
|
280
280
|
typeScriptExtensionExpression,
|
|
281
281
|
processEnvExpansionPattern,
|
|
282
|
-
inlineTypePattern,
|
|
283
282
|
Paths,
|
|
284
283
|
Json
|
|
285
284
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
|
|
3
|
+
import type { Plugin, TsconfigRaw } from "esbuild";
|
|
4
|
+
import type { FileSystemEvent, WatchrOptions } from "@d1g1tal/watchr";
|
|
5
|
+
import type { CompilerOptions, Diagnostic, ProjectReference, ScriptTarget } from "typescript";
|
|
6
|
+
import type { PerformanceEntry, PerformanceMeasureOptions } from "node:perf_hooks";
|
|
5
7
|
|
|
6
8
|
declare global {
|
|
7
9
|
interface ImportMeta {
|
package/dist/index.js
CHANGED
package/dist/tsbuild.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
BuildError,
|
|
4
4
|
TypeScriptProject
|
|
5
|
-
} from "./
|
|
6
|
-
import "./
|
|
5
|
+
} from "./QNWF5BZL.js";
|
|
6
|
+
import "./YC2FB45E.js";
|
|
7
7
|
|
|
8
8
|
// src/tsbuild.ts
|
|
9
9
|
import { sys } from "typescript";
|
|
@@ -30,7 +30,7 @@ if (help) {
|
|
|
30
30
|
process.exit(0);
|
|
31
31
|
}
|
|
32
32
|
if (version) {
|
|
33
|
-
console.log("1.
|
|
33
|
+
console.log("1.7.0");
|
|
34
34
|
process.exit(0);
|
|
35
35
|
}
|
|
36
36
|
var typeScriptOptions = {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@d1g1tal/tsbuild",
|
|
3
3
|
"author": "D1g1talEntr0py",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.7.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A fast, ESM-only TypeScript build tool combining the TypeScript API for type checking and declaration generation, esbuild for bundling, and SWC for decorator metadata.",
|
|
7
7
|
"homepage": "https://github.com/D1g1talEntr0py/tsbuild#readme",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"access": "public"
|
|
27
27
|
},
|
|
28
28
|
"type": "module",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
29
30
|
"exports": {
|
|
30
31
|
".": {
|
|
31
32
|
"types": "./dist/index.d.ts",
|
|
@@ -43,26 +44,27 @@
|
|
|
43
44
|
"tsbuild": "./dist/tsbuild.js"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
|
46
|
-
"@d1g1tal/watchr": "^1.0.
|
|
47
|
+
"@d1g1tal/watchr": "^1.0.5",
|
|
47
48
|
"esbuild": "^0.27.4",
|
|
48
49
|
"magic-string": "^0.30.21"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
|
-
"@babel/plugin-proposal-decorators": "^7.29.0",
|
|
52
52
|
"@eslint/js": "^10.0.1",
|
|
53
|
-
"@rolldown/plugin-babel": "^0.2.2",
|
|
54
53
|
"@types/node": "^25.5.0",
|
|
55
|
-
"@typescript-eslint/eslint-plugin": "^8.57.
|
|
56
|
-
"@typescript-eslint/parser": "^8.57.
|
|
57
|
-
"@vitest/coverage-v8": "^4.1.
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^8.57.2",
|
|
55
|
+
"@typescript-eslint/parser": "^8.57.2",
|
|
56
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
58
57
|
"eslint": "^10.1.0",
|
|
59
|
-
"eslint-plugin-jsdoc": "^62.8.
|
|
58
|
+
"eslint-plugin-jsdoc": "^62.8.1",
|
|
60
59
|
"fs-monkey": "^1.1.0",
|
|
61
|
-
"memfs": "^4.
|
|
60
|
+
"memfs": "^4.57.1",
|
|
62
61
|
"tsx": "^4.21.0",
|
|
63
|
-
"typescript": "^
|
|
64
|
-
"typescript-eslint": "^8.57.
|
|
65
|
-
"vitest": "^4.1.
|
|
62
|
+
"typescript": "^6.0.2",
|
|
63
|
+
"typescript-eslint": "^8.57.2",
|
|
64
|
+
"vitest": "^4.1.2"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"typescript": ">=5.6.3"
|
|
66
68
|
},
|
|
67
69
|
"keywords": [
|
|
68
70
|
"typescript",
|
|
@@ -83,6 +85,7 @@
|
|
|
83
85
|
"lint": "eslint ./src",
|
|
84
86
|
"test": "vitest run",
|
|
85
87
|
"test:coverage": "vitest run --coverage",
|
|
86
|
-
"test:watch": "vitest"
|
|
88
|
+
"test:watch": "vitest",
|
|
89
|
+
"test:compat": "tsx tests/scripts/test-ts-compat.ts --versions 5"
|
|
87
90
|
}
|
|
88
91
|
}
|