From 2eda1e56ce3893acdb1d93c7d37755ef0d6edcd0 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 12:30:34 +0900 Subject: [PATCH 01/10] feat: add pnpm workspace configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit packages/* をワークスペースとして管理するための設定を追加 --- pnpm-lock.yaml | 2 ++ pnpm-workspace.yaml | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 pnpm-workspace.yaml diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb60993..1bec2ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,6 +18,8 @@ importers: specifier: ^0.27.0 version: 0.27.0 + packages/tsconfig: {} + packages: '@oxfmt/darwin-arm64@0.27.0': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..dee51e9 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "packages/*" From 911e03a89bd7483d95667b6f6c1ca5fb016d7dc3 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 12:34:19 +0900 Subject: [PATCH 02/10] feat: add @plainbrew/tsconfig strict TypeScript configuration package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit strict な TypeScript 設定を共有パッケージとして提供 - ベース設定: 厳格な型チェックオプションを網羅 - React 設定: JSX と DOM lib を追加した React 向け設定 --- packages/tsconfig/package.json | 21 +++++++++++++++++++++ packages/tsconfig/react.json | 8 ++++++++ packages/tsconfig/tsconfig.json | 27 +++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 packages/tsconfig/package.json create mode 100644 packages/tsconfig/react.json create mode 100644 packages/tsconfig/tsconfig.json diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json new file mode 100644 index 0000000..1231e04 --- /dev/null +++ b/packages/tsconfig/package.json @@ -0,0 +1,21 @@ +{ + "name": "@plainbrew/tsconfig", + "version": "0.1.0", + "description": "Strict TypeScript configuration for plainbrew projects", + "keywords": [ + "react", + "strict", + "tsconfig", + "typescript" + ], + "license": "MIT", + "files": [ + "tsconfig.json", + "react.json" + ], + "type": "module", + "exports": { + ".": "./tsconfig.json", + "./react": "./react.json" + } +} diff --git a/packages/tsconfig/react.json b/packages/tsconfig/react.json new file mode 100644 index 0000000..1d9cefb --- /dev/null +++ b/packages/tsconfig/react.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx", + "lib": ["dom", "dom.iterable", "esnext"] + } +} diff --git a/packages/tsconfig/tsconfig.json b/packages/tsconfig/tsconfig.json new file mode 100644 index 0000000..074bc10 --- /dev/null +++ b/packages/tsconfig/tsconfig.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "noFallthroughCasesInSwitch": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "allowUnusedLabels": false, + "allowUnreachableCode": false, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "bundler", + "module": "preserve", + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + } +} From 69e1d85c08d06cabbdcd7cba061105d2b2f3a1b9 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:00:10 +0900 Subject: [PATCH 03/10] fix: remove verbatimModuleSyntax from strict tsconfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CJS 環境との互換性問題があるため削除。 型 import の強制は ESLint ルールで対応する方が安全。 ref: https://zenn.dev/teppeis/articles/2023-04-typescript-5_0-verbatim-module-syntax --- packages/tsconfig/tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/tsconfig/tsconfig.json b/packages/tsconfig/tsconfig.json index 074bc10..522f714 100644 --- a/packages/tsconfig/tsconfig.json +++ b/packages/tsconfig/tsconfig.json @@ -13,7 +13,6 @@ "allowUnusedLabels": false, "allowUnreachableCode": false, "isolatedModules": true, - "verbatimModuleSyntax": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, From 43c3520e0361577d10292ef66194cacdb8a7ae0f Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:15:14 +0900 Subject: [PATCH 04/10] refactor: improve tsconfig based on major OSS review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 大規模 OSS (@tsconfig/strictest, @sindresorhus/tsconfig, @total-typescript/tsconfig) との 比較レビューに基づく改善: - add: noUncheckedSideEffectImports (TS 5.6+, 副作用 import の存在チェック) - add: erasableSyntaxOnly (TS 5.8+, enum/namespace を禁止) - add: moduleDetection: "force" (全ファイルをモジュールとして扱う) - remove: declaration, declarationMap, sourceMap (output 系は拡張先に委ねる) - remove: forceConsistentCasingInFileNames (TS 5.0 以降デフォルト true) --- packages/tsconfig/tsconfig.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/tsconfig/tsconfig.json b/packages/tsconfig/tsconfig.json index 522f714..cb46e96 100644 --- a/packages/tsconfig/tsconfig.json +++ b/packages/tsconfig/tsconfig.json @@ -8,19 +8,18 @@ "noImplicitReturns": true, "noPropertyAccessFromIndexSignature": true, "noUncheckedIndexedAccess": true, + "noUncheckedSideEffectImports": true, "noUnusedLocals": true, "noUnusedParameters": true, "allowUnusedLabels": false, "allowUnreachableCode": false, + "erasableSyntaxOnly": true, "isolatedModules": true, "esModuleInterop": true, "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, + "moduleDetection": "force", "moduleResolution": "bundler", "module": "preserve", - "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true + "resolveJsonModule": true } } From 89ade920c4079763553accfeaf32c010460638b2 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:18:47 +0900 Subject: [PATCH 05/10] docs: add design decisions document for tsconfig package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各オプションの採用理由と不採用理由を OSS の参考元とともに記載 --- packages/tsconfig/README.md | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 packages/tsconfig/README.md diff --git a/packages/tsconfig/README.md b/packages/tsconfig/README.md new file mode 100644 index 0000000..4536717 --- /dev/null +++ b/packages/tsconfig/README.md @@ -0,0 +1,62 @@ +# @plainbrew/tsconfig + +plainbrew プロジェクト向けの strict な TypeScript 設定。 + +## 使い方 + +```jsonc +// ベース +{ "extends": "@plainbrew/tsconfig" } + +// React +{ "extends": "@plainbrew/tsconfig/react" } +``` + +## 設計判断 + +`@tsconfig/strictest`, `@sindresorhus/tsconfig`, `@total-typescript/tsconfig` 等の大規模 OSS を参考に設計。 + +### Strict 系 + +| オプション | 採用理由 | +| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `strict` | `strictNullChecks`, `noImplicitAny` 等を一括有効化 | +| `exactOptionalPropertyTypes` | `undefined` の明示的な使用を強制。`@tsconfig/strictest` と同方針 | +| `noFallthroughCasesInSwitch` | switch 文の break 忘れを防止 | +| `noImplicitOverride` | `override` キーワードの明示を強制し、継承元の変更検知を容易に | +| `noImplicitReturns` | 全コードパスでの return を強制 | +| `noPropertyAccessFromIndexSignature` | index signature へのドットアクセスを禁止し、bracket notation を強制 | +| `noUncheckedIndexedAccess` | 配列・オブジェクトのインデックスアクセスに `undefined` を含める | +| `noUncheckedSideEffectImports` | `import "./styles.css"` 等の副作用 import の存在チェック (TS 5.6+)。`@sindresorhus/tsconfig` が採用 | +| `noUnusedLocals` / `noUnusedParameters` | 未使用変数・引数を検出 | +| `allowUnusedLabels: false` / `allowUnreachableCode: false` | 到達不能コードや未使用ラベルをエラーに | +| `erasableSyntaxOnly` | `enum`, `namespace` 等の型消去不可能な構文を禁止 (TS 5.8+)。Node.js の `--experimental-strip-types` と互換。`@sindresorhus/tsconfig` が採用 | + +### Module 系 + +| オプション | 採用理由 | +| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `module: "preserve"` | import/export をそのまま保持しバンドラーに委ねる (TS 5.4+) | +| `moduleResolution: "bundler"` | Vite, webpack, Next.js 等のバンドラー環境に最適化 | +| `moduleDetection: "force"` | 全ファイルをモジュールとして扱いグローバルスコープ汚染を防止。`@total-typescript/tsconfig`, `@sindresorhus/tsconfig` が採用 | +| `isolatedModules` | ファイル単位のトランスパイルを保証。esbuild, SWC 等との互換性確保 | +| `esModuleInterop` | CJS モジュールの default import を安全に扱う。`verbatimModuleSyntax` は CJS 環境で問題があるため不採用(ESLint ルールで代替) | +| `resolveJsonModule` | JSON ファイルの型安全な import を許可 | +| `skipLibCheck` | `.d.ts` のチェックをスキップしビルド高速化。ほぼ全ての主要パッケージが採用 | + +### 意図的に含めないオプション + +| オプション | 不採用理由 | +| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `target` / `lib` | 実行環境に依存するため拡張先に委ねる | +| `declaration` / `declarationMap` / `sourceMap` | output 系は strictness と無関係。app と library で要件が異なる | +| `verbatimModuleSyntax` | CJS 出力環境で `import` を `require()` に変換不可。ESLint (`@typescript-eslint/consistent-type-imports`) で代替可能 | +| `forceConsistentCasingInFileNames` | TS 5.0 以降デフォルト `true` | +| `noEmit` | バンドラー/フレームワーク設定に依存 | + +### React 設定 (`react.json`) + +ベースを継承し、React 固有のオプションのみ追加: + +- `jsx: "react-jsx"` — React 17+ の JSX Transform を使用 +- `lib: ["dom", "dom.iterable", "esnext"]` — ブラウザ API の型定義 From 595dfc328c92d24d28bdb3d536597801a6376579 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:20:16 +0900 Subject: [PATCH 06/10] feat: add typescript peer dependency to tsconfig package --- packages/tsconfig/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 1231e04..eb75031 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -17,5 +17,8 @@ "exports": { ".": "./tsconfig.json", "./react": "./react.json" + }, + "peerDependencies": { + "typescript": ">=5.4.0" } } From 92a5a8ae1d6b717a122ab1a1a30392f2e659a9ff Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:26:18 +0900 Subject: [PATCH 07/10] docs: add tsconfig reference links to design decisions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各オプションに公式ドキュメントへのリンクを追加 --- packages/tsconfig/README.md | 62 ++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/packages/tsconfig/README.md b/packages/tsconfig/README.md index 4536717..8f56b2a 100644 --- a/packages/tsconfig/README.md +++ b/packages/tsconfig/README.md @@ -18,45 +18,45 @@ plainbrew プロジェクト向けの strict な TypeScript 設定。 ### Strict 系 -| オプション | 採用理由 | -| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| `strict` | `strictNullChecks`, `noImplicitAny` 等を一括有効化 | -| `exactOptionalPropertyTypes` | `undefined` の明示的な使用を強制。`@tsconfig/strictest` と同方針 | -| `noFallthroughCasesInSwitch` | switch 文の break 忘れを防止 | -| `noImplicitOverride` | `override` キーワードの明示を強制し、継承元の変更検知を容易に | -| `noImplicitReturns` | 全コードパスでの return を強制 | -| `noPropertyAccessFromIndexSignature` | index signature へのドットアクセスを禁止し、bracket notation を強制 | -| `noUncheckedIndexedAccess` | 配列・オブジェクトのインデックスアクセスに `undefined` を含める | -| `noUncheckedSideEffectImports` | `import "./styles.css"` 等の副作用 import の存在チェック (TS 5.6+)。`@sindresorhus/tsconfig` が採用 | -| `noUnusedLocals` / `noUnusedParameters` | 未使用変数・引数を検出 | -| `allowUnusedLabels: false` / `allowUnreachableCode: false` | 到達不能コードや未使用ラベルをエラーに | -| `erasableSyntaxOnly` | `enum`, `namespace` 等の型消去不可能な構文を禁止 (TS 5.8+)。Node.js の `--experimental-strip-types` と互換。`@sindresorhus/tsconfig` が採用 | +| オプション | 採用理由 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| [`strict`](https://www.typescriptlang.org/tsconfig/#strict) | `strictNullChecks`, `noImplicitAny` 等を一括有効化 | +| [`exactOptionalPropertyTypes`](https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes) | `undefined` の明示的な使用を強制。`@tsconfig/strictest` と同方針 | +| [`noFallthroughCasesInSwitch`](https://www.typescriptlang.org/tsconfig/#noFallthroughCasesInSwitch) | switch 文の break 忘れを防止 | +| [`noImplicitOverride`](https://www.typescriptlang.org/tsconfig/#noImplicitOverride) | `override` キーワードの明示を強制し、継承元の変更検知を容易に | +| [`noImplicitReturns`](https://www.typescriptlang.org/tsconfig/#noImplicitReturns) | 全コードパスでの return を強制 | +| [`noPropertyAccessFromIndexSignature`](https://www.typescriptlang.org/tsconfig/#noPropertyAccessFromIndexSignature) | index signature へのドットアクセスを禁止し、bracket notation を強制 | +| [`noUncheckedIndexedAccess`](https://www.typescriptlang.org/tsconfig/#noUncheckedIndexedAccess) | 配列・オブジェクトのインデックスアクセスに `undefined` を含める | +| [`noUncheckedSideEffectImports`](https://www.typescriptlang.org/tsconfig/#noUncheckedSideEffectImports) | `import "./styles.css"` 等の副作用 import の存在チェック (TS 5.6+)。`@sindresorhus/tsconfig` が採用 | +| [`noUnusedLocals`](https://www.typescriptlang.org/tsconfig/#noUnusedLocals) / [`noUnusedParameters`](https://www.typescriptlang.org/tsconfig/#noUnusedParameters) | 未使用変数・引数を検出 | +| [`allowUnusedLabels`](https://www.typescriptlang.org/tsconfig/#allowUnusedLabels) / [`allowUnreachableCode`](https://www.typescriptlang.org/tsconfig/#allowUnreachableCode) | `false` に設定。到達不能コードや未使用ラベルをエラーに | +| [`erasableSyntaxOnly`](https://www.typescriptlang.org/tsconfig/#erasableSyntaxOnly) | `enum`, `namespace` 等の型消去不可能な構文を禁止 (TS 5.8+)。Node.js の `--experimental-strip-types` と互換。`@sindresorhus/tsconfig` が採用 | ### Module 系 -| オプション | 採用理由 | -| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `module: "preserve"` | import/export をそのまま保持しバンドラーに委ねる (TS 5.4+) | -| `moduleResolution: "bundler"` | Vite, webpack, Next.js 等のバンドラー環境に最適化 | -| `moduleDetection: "force"` | 全ファイルをモジュールとして扱いグローバルスコープ汚染を防止。`@total-typescript/tsconfig`, `@sindresorhus/tsconfig` が採用 | -| `isolatedModules` | ファイル単位のトランスパイルを保証。esbuild, SWC 等との互換性確保 | -| `esModuleInterop` | CJS モジュールの default import を安全に扱う。`verbatimModuleSyntax` は CJS 環境で問題があるため不採用(ESLint ルールで代替) | -| `resolveJsonModule` | JSON ファイルの型安全な import を許可 | -| `skipLibCheck` | `.d.ts` のチェックをスキップしビルド高速化。ほぼ全ての主要パッケージが採用 | +| オプション | 採用理由 | +| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| [`module`](https://www.typescriptlang.org/tsconfig/#module): `"preserve"` | import/export をそのまま保持しバンドラーに委ねる (TS 5.4+) | +| [`moduleResolution`](https://www.typescriptlang.org/tsconfig/#moduleResolution): `"bundler"` | Vite, webpack, Next.js 等のバンドラー環境に最適化 | +| [`moduleDetection`](https://www.typescriptlang.org/tsconfig/#moduleDetection): `"force"` | 全ファイルをモジュールとして扱いグローバルスコープ汚染を防止。`@total-typescript/tsconfig`, `@sindresorhus/tsconfig` が採用 | +| [`isolatedModules`](https://www.typescriptlang.org/tsconfig/#isolatedModules) | ファイル単位のトランスパイルを保証。esbuild, SWC 等との互換性確保 | +| [`esModuleInterop`](https://www.typescriptlang.org/tsconfig/#esModuleInterop) | CJS モジュールの default import を安全に扱う。`verbatimModuleSyntax` は CJS 環境で問題があるため不採用(ESLint ルールで代替) | +| [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig/#resolveJsonModule) | JSON ファイルの型安全な import を許可 | +| [`skipLibCheck`](https://www.typescriptlang.org/tsconfig/#skipLibCheck) | `.d.ts` のチェックをスキップしビルド高速化。ほぼ全ての主要パッケージが採用 | ### 意図的に含めないオプション -| オプション | 不採用理由 | -| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `target` / `lib` | 実行環境に依存するため拡張先に委ねる | -| `declaration` / `declarationMap` / `sourceMap` | output 系は strictness と無関係。app と library で要件が異なる | -| `verbatimModuleSyntax` | CJS 出力環境で `import` を `require()` に変換不可。ESLint (`@typescript-eslint/consistent-type-imports`) で代替可能 | -| `forceConsistentCasingInFileNames` | TS 5.0 以降デフォルト `true` | -| `noEmit` | バンドラー/フレームワーク設定に依存 | +| オプション | 不採用理由 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| [`target`](https://www.typescriptlang.org/tsconfig/#target) / [`lib`](https://www.typescriptlang.org/tsconfig/#lib) | 実行環境に依存するため拡張先に委ねる | +| [`declaration`](https://www.typescriptlang.org/tsconfig/#declaration) / [`declarationMap`](https://www.typescriptlang.org/tsconfig/#declarationMap) / [`sourceMap`](https://www.typescriptlang.org/tsconfig/#sourceMap) | output 系は strictness と無関係。app と library で要件が異なる | +| [`verbatimModuleSyntax`](https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax) | CJS 出力環境で `import` を `require()` に変換不可。ESLint (`@typescript-eslint/consistent-type-imports`) で代替可能 | +| [`forceConsistentCasingInFileNames`](https://www.typescriptlang.org/tsconfig/#forceConsistentCasingInFileNames) | TS 5.0 以降デフォルト `true` | +| [`noEmit`](https://www.typescriptlang.org/tsconfig/#noEmit) | バンドラー/フレームワーク設定に依存 | ### React 設定 (`react.json`) ベースを継承し、React 固有のオプションのみ追加: -- `jsx: "react-jsx"` — React 17+ の JSX Transform を使用 -- `lib: ["dom", "dom.iterable", "esnext"]` — ブラウザ API の型定義 +- [`jsx`](https://www.typescriptlang.org/tsconfig/#jsx): `"react-jsx"` — React 17+ の JSX Transform を使用 +- [`lib`](https://www.typescriptlang.org/tsconfig/#lib): `["dom", "dom.iterable", "esnext"]` — ブラウザ API の型定義 From a064927ba0292e2cca14b4aac21297e8954267b6 Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 13:28:43 +0900 Subject: [PATCH 08/10] fix: update lockfile for tsconfig peerDependencies --- pnpm-lock.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bec2ae..9cf6b6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,11 @@ importers: specifier: ^0.27.0 version: 0.27.0 - packages/tsconfig: {} + packages/tsconfig: + dependencies: + typescript: + specifier: '>=5.4.0' + version: 5.9.3 packages: @@ -210,6 +214,11 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -384,6 +393,8 @@ snapshots: dependencies: is-number: 7.0.0 + typescript@5.9.3: {} + wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 From f3e671f2ade2f5eadcc3c6a25d9b29c9f8eb0d8a Mon Sep 17 00:00:00 2001 From: akameco Date: Thu, 26 Feb 2026 23:12:31 +0900 Subject: [PATCH 09/10] fix: require TypeScript >=5.8.0 for erasableSyntaxOnly support Update peerDependencies minimum from >=5.4.0 to >=5.8.0 and add version requirement note to README usage section. --- packages/tsconfig/README.md | 2 ++ packages/tsconfig/package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/tsconfig/README.md b/packages/tsconfig/README.md index 8f56b2a..34d57b1 100644 --- a/packages/tsconfig/README.md +++ b/packages/tsconfig/README.md @@ -4,6 +4,8 @@ plainbrew プロジェクト向けの strict な TypeScript 設定。 ## 使い方 +> **TypeScript >= 5.8 が必要です** (`erasableSyntaxOnly` は TS 5.8+、`noUncheckedSideEffectImports` は TS 5.6+) + ```jsonc // ベース { "extends": "@plainbrew/tsconfig" } diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index eb75031..de0d557 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -19,6 +19,6 @@ "./react": "./react.json" }, "peerDependencies": { - "typescript": ">=5.4.0" + "typescript": ">=5.8.0" } } From 92ccc121daf029e04261764c49c1d98b168b1213 Mon Sep 17 00:00:00 2001 From: akameco Date: Fri, 27 Feb 2026 09:04:45 +0900 Subject: [PATCH 10/10] fix: update lockfile for typescript peerDependencies bump --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cf6b6f..262d430 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: packages/tsconfig: dependencies: typescript: - specifier: '>=5.4.0' + specifier: '>=5.8.0' version: 5.9.3 packages: