Skip to content

Commit 5d7a563

Browse files
committed
build: typescript changes
- avoid patched typescript for typescript-transform-paths - use `package.json#imports` subpath imports instead of `tsconfig#compileroptions.paths` path aliases - use "solution-style" tsconfig with tsc build mode - use exact paths for module specifiers everywhere - upgrade `@typescript-eslint/*` to latest - upgrade `eslint-plugin-n` to latest
1 parent b8af173 commit 5d7a563

58 files changed

Lines changed: 429 additions & 111573 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Project Structure & Module Organization
44

5-
- `packages/*`: TypeScript libraries and CLIs with `src/`, `tsconfig.project.json`, and `turbo.json`; builds emit to `dist/`.
5+
- `packages/*`: TypeScript libraries and CLIs with `src/`, `tsconfig.json`, and `turbo.json`; builds emit to `dist/`.
66
- `platform/*`: shared tooling packages (`config-eslint`, `config-typescript`, `superturbo`) used across the workspace.
77
- `test/*`: fixture packages (e.g., `test/test-package-for-pkg-consumption-test`) used in integration scenarios.
88
- `patches/`: patched dependencies (TypeScript patch referenced in `package.json#pnpm.patchedDependencies`).
@@ -38,4 +38,3 @@
3838
- Follow Conventional Commits as seen in history (`chore:`, `fix(scope):`, `ci:`, `refactor:`); include scope when useful.
3939
- Add a Changeset (`pnpm changeset`) for user-facing package changes; omit for tooling-only tweaks unless publishing impact.
4040
- PRs should describe intent, affected packages, and commands run (`build`, `lint`, relevant tests); link issues and include screenshots/logs for UX/CLI changes when helpful.
41-
- Avoid updating the TypeScript patch manually; use `pnpm run create-pnpm-patch-via-ts-patch` when bumping versions and keep `patches/typescript@...` in sync.

README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
- [Prerequisites](#prerequisites)
55
- [Build \& Run](#build--run)
66
- [Additional commands for development](#additional-commands-for-development)
7-
- [Updating TypeScript](#updating-typescript)
87

98
## Development
109

@@ -27,12 +26,8 @@ For detailed information about the repository structure, conventions, and develo
2726

2827
### Build & Run
2928

30-
See [Common Commands in CLAUDE.md](./CLAUDE.md#common-commands) for build and development commands.
29+
See [AGENTS.md](./AGENTS.md) for build and development commands.
3130

3231
### Additional commands for development
3332

3433
See `scripts` of [`./package.json`](./package.json) for available scripts in the workspace.
35-
36-
## Updating TypeScript
37-
38-
See [TypeScript Patching in CLAUDE.md](./CLAUDE.md#typescript-patching) for detailed instructions on updating TypeScript with our custom transformer setup.

package.json

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
"scripts": {
55
"build": "superturbo build",
66
"changeset": "changeset",
7-
"create-pnpm-patch-via-ts-patch": "pnpm --filter=\"@patricktree/pkg-management\" exec node ./dist/create-pnpm-patch-via-ts-patch.mjs --typescript-version=5.5.4 --ts-patch-version=3.2.1",
87
"format": "prettier --write --ignore-unknown .",
98
"lint": "superturbo lint",
109
"lint:fix": "superturbo lint:fix",
1110
"nuke": "pnpm --parallel run nuke && pnpm run nuke:artifacts && pnpm run nuke:compute-cache && pnpm run nuke:node-modules",
1211
"nuke:artifacts": "pnpm --parallel run nuke:artifacts",
1312
"nuke:compute-cache": "del-cli \"*/**/.turbo\"",
1413
"nuke:node-modules": "del-cli \"**/node_modules\"",
15-
"prepare": "node --eval \"process.exit(process.env.CI === 'true' ? 0 : -1)\" || (husky && pnpm exec add-all-tsconfigs-as-project-references --monorepo-path=. --tsconfig-filename=\"tsconfig.project.json\")",
14+
"prepare": "node --eval \"process.exit(process.env.CI === 'true' ? 0 : -1)\" || (husky && pnpm exec add-all-tsconfigs-as-project-references --monorepo-path=. --tsconfig-filename=\"tsconfig.json\")",
1615
"test": "pnpm --parallel run test"
1716
},
1817
"devDependencies": {
@@ -21,25 +20,24 @@
2120
"@patricktree/config-typescript": "workspace:*",
2221
"@patricktree/pkg-management": "^2.1.0",
2322
"@patricktree/superturbo": "workspace:*",
24-
"@typescript-eslint/eslint-plugin": "^8.26.1",
25-
"@typescript-eslint/parser": "^8.26.1",
23+
"@typescript-eslint/eslint-plugin": "^8.51.0",
24+
"@typescript-eslint/parser": "^8.51.0",
2625
"del-cli": "^5.1.0",
2726
"eslint": "^8.57.0",
2827
"eslint-config-prettier": "^9.1.0",
2928
"eslint-plugin-code-import-patterns": "workspace:*",
3029
"eslint-plugin-eslint-comments": "^3.2.0",
3130
"eslint-plugin-import": "^2.30.0",
3231
"eslint-plugin-jsdoc": "^50.2.2",
33-
"eslint-plugin-n": "^17.10.2",
32+
"eslint-plugin-n": "^17.23.1",
3433
"eslint-plugin-only-warn": "^1.1.0",
3534
"eslint-plugin-regexp": "^2.6.0",
3635
"eslint-plugin-unicorn": "^55.0.0",
3736
"husky": "^9.1.5",
3837
"prettier": "^3.3.3",
3938
"prettier-plugin-packagejson": "^2.5.2",
4039
"turbo": "^2.7.2",
41-
"typescript": "~5.8.2",
42-
"typescript-transform-paths": "^3.5.5",
40+
"typescript": "~5.9.3",
4341
"zx": "^8.1.5"
4442
},
4543
"packageManager": "pnpm@10.11.0",
@@ -52,9 +50,6 @@
5250
"eslint",
5351
"@types/eslint"
5452
]
55-
},
56-
"patchedDependencies": {
57-
"typescript@5.8.2": "patches/typescript@5.8.2.patch"
5853
}
5954
}
6055
}

packages/codemod-rewrite-module-specifiers-to-full-paths/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
},
1313
"license": "MIT",
1414
"author": "Patrick Kerschbaum <patrick.kerschbaum@gmail.com>",
15+
"imports": {
16+
"#pkg/*": "./dist/*",
17+
"#pkg-test/*": "./test/*"
18+
},
1519
"exports": {
1620
".": "./dist/index.js",
1721
"./*": "./dist/*.js"
@@ -31,7 +35,7 @@
3135
"scripts": {
3236
"build": "pnpm run internal:compile",
3337
"dev": "pnpm run build --watch --preserveWatchOutput",
34-
"internal:compile": "tsc -p ./tsconfig.build.json",
38+
"internal:compile": "tsc --build ./tsconfig.json",
3539
"lint": "pnpm run lint:file .",
3640
"lint:file": "eslint --max-warnings 0",
3741
"lint:fix": "pnpm run lint --fix",

packages/codemod-rewrite-module-specifiers-to-full-paths/src/bin/codemod.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import * as commander from '@commander-js/extra-typings';
44
import fs from 'node:fs';
55

6-
import { loadTypeScriptProgram } from '#pkg/load-typescript-program';
7-
import { rewriteModuleSpecifiersOfTypeScriptProject } from '#pkg/transform/index';
6+
import { loadTypeScriptProgram } from '#pkg/load-typescript-program.js';
7+
import { rewriteModuleSpecifiersOfTypeScriptProject } from '#pkg/transform/index.js';
88

99
const commanderProgram = new commander.Command()
1010
.addOption(
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export * from '#pkg/transform/rewrite-module-specifiers-of-typescript-project';
1+
export * from '#pkg/transform/rewrite-module-specifiers-of-typescript-project.js';

packages/codemod-rewrite-module-specifiers-to-full-paths/src/transform/resolve-module-specifier-to-full-path.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import path from 'node:path';
22
import invariant from 'tiny-invariant';
33
import ts from 'typescript';
44

5-
import { VisitorContext } from '#pkg/transform/types';
5+
import { VisitorContext } from '#pkg/transform/types.js';
66

77
const tsExtensionToJsExtensionMap = {
88
/* map .d.ts and its variants to just .js */

packages/codemod-rewrite-module-specifiers-to-full-paths/src/transform/rewrite-module-specifiers-of-file-visitor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import jscodeshift from 'jscodeshift';
33
import invariant from 'tiny-invariant';
44

5-
import { resolveModuleSpecifierToFullPath } from '#pkg/transform/resolve-module-specifier-to-full-path';
6-
import type { VisitorContext } from '#pkg/transform/types';
5+
import { resolveModuleSpecifierToFullPath } from '#pkg/transform/resolve-module-specifier-to-full-path.js';
6+
import type { VisitorContext } from '#pkg/transform/types.js';
77

88
type QuoteToUseRef = {
99
value: NonNullable<Parameters<jscodeshift.Collection['toSource']>[0]>['quote'];

packages/codemod-rewrite-module-specifiers-to-full-paths/src/transform/rewrite-module-specifiers-of-typescript-project.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { type TypeScriptProgram } from '#pkg/load-typescript-program';
2-
import { rewriteModuleSpecifiersOfFileVisitor } from '#pkg/transform/rewrite-module-specifiers-of-file-visitor';
3-
import type { VisitorContext } from '#pkg/transform/types';
1+
import { type TypeScriptProgram } from '#pkg/load-typescript-program.js';
2+
import { rewriteModuleSpecifiersOfFileVisitor } from '#pkg/transform/rewrite-module-specifiers-of-file-visitor.js';
3+
import type { VisitorContext } from '#pkg/transform/types.js';
44

55
export function rewriteModuleSpecifiersOfTypeScriptProject(
66
typeScriptProgram: TypeScriptProgram,

packages/codemod-rewrite-module-specifiers-to-full-paths/src/transform/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { TypeScriptProgram } from '#pkg/load-typescript-program';
1+
import type { TypeScriptProgram } from '#pkg/load-typescript-program.js';
22

33
export type VisitorContext = {
44
absolutePathSourceFile: string;

0 commit comments

Comments
 (0)