---
generated_at: 2026-03-01 16:30:00
metrics:
  claims_total: 163
  claims_with_evidence: 158
  claims_without_evidence: 5
confidence_derived: 0.97
---

# 根拠レポート：tailwindcss-node 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：158 / 163、根拠なし：5
- 優先レビュー（高）
  1. **C-024, C-025 (importModuleのjitiフォールバック/標準import)**: jitiライブラリの動作仕様が外部依存のため根拠不足
  2. **C-073 (optimize errorRecovery)**: lightningcssのerrorRecovery動作が外部ライブラリ依存
  3. **C-087 (isDataUrl 大文字DATA:)**: 正規表現`/^\s*data:/i`の`i`フラグで大文字小文字無視だがテストケースとしてはエッジケース
  4. **C-115 (asyncReplace 複数マッチ)**: 正規表現の非グローバルフラグでのwhile loopによる複数マッチの挙動が実装依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/@tailwindcss-node/src/compile.ts` - コンパイル関連関数の定義（compile, compileAst, loadModule, loadStylesheet, importModule, resolveCssId, resolveJsId, runResolver, createCompileOptions, ensureSourceDetectionRootExists, __unstable__loadDesignSystem）
- E-02: `packages/@tailwindcss-node/src/env.ts` - resolveDebug関数およびDEBUG定数の定義
- E-03: `packages/@tailwindcss-node/src/get-module-dependencies.ts` - getModuleDependencies, resolveWithExtension, traceDependencies関数の定義、DEPENDENCY_PATTERNS, JS_RESOLUTION_ORDER, TS_RESOLUTION_ORDER定数
- E-04: `packages/@tailwindcss-node/src/optimize.ts` - optimize関数、OptimizeOptions/TransformResultインターフェース、dim/yellow関数の定義
- E-05: `packages/@tailwindcss-node/src/urls.ts` - rewriteUrls, rewriteCssUrls, rewriteCssImageSet, doUrlReplace, skipUrlReplacer, processSrcSet, parseSrcset, joinSrcset, asyncReplace, isDataUrl, isExternalUrl関数、正規表現パターンの定義
- E-06: `packages/@tailwindcss-node/src/source-maps.ts` - toSourceMap, serializeSourceMap関数、SourceMapインターフェースの定義
- E-07: `packages/@tailwindcss-node/src/normalize-path.ts` - normalizePath, normalizePathBase関数の定義
- E-08: `packages/@tailwindcss-node/src/instrumentation.ts` - Instrumentationクラスの定義（hit, start, end, reset, report, [Symbol.dispose], constructor）、dim/blue関数の定義
- E-09: `packages/@tailwindcss-node/src/require-cache.cts` - clearRequireCache関数の定義
- E-10: `packages/@tailwindcss-node/src/esm-cache.loader.mts` - resolve ESMローダーフックの定義
- E-11: `packages/@tailwindcss-node/src/index.ts` - モジュールのre-export定義
- E-12: `packages/@tailwindcss-node/src/index.cts` - CommonJSエントリポイント定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | compile関数が有効なCSSでコンパイラを返却する | E-01 (L100-104) | ○ |
| C-002 | compile関数が空CSSでエラーまたは空コンパイラを返す | E-01 (L100-104) | ○ |
| C-003 | compileAst関数が有効なASTでコンパイラを返却する | E-01 (L94-98) | ○ |
| C-004 | compileAst関数が空AST配列でエラーまたは空コンパイラを返す | E-01 (L94-98) | ○ |
| C-005 | ensureSourceDetectionRootExistsが存在するパスでエラーなし | E-01 (L66-92) | ○ |
| C-006 | ensureSourceDetectionRootExistsが存在しないパスでエラー | E-01 (L86-90) | ○ |
| C-007 | ensureSourceDetectionRootExistsがroot='none'でスキップ | E-01 (L70) | ○ |
| C-008 | ensureSourceDetectionRootExistsがroot=nullでスキップ | E-01 (L70) | ○ |
| C-009 | ensureSourceDetectionRootExistsのglob先頭パターン処理 | E-01 (L72-78) | ○ |
| C-010 | createCompileOptionsが必須オプションでオブジェクト生成 | E-01 (L33-64) | ○ |
| C-011 | shouldRewriteUrlsがtrue時にURL書き換え実行 | E-01 (L53-59) | ○ |
| C-012 | カスタムCSSリゾルバがloadStylesheetで使用される | E-01 (L30, L50-51) | ○ |
| C-013 | カスタムJSリゾルバがloadModuleで使用される | E-01 (L29, L47-48) | ○ |
| C-014 | loadModuleが相対パスモジュールをロード | E-01 (L118-156) | ○ |
| C-015 | loadModuleがパッケージ名モジュールをロード | E-01 (L124-136) | ○ |
| C-016 | loadModuleが存在しないモジュールでエラー | E-01 (L126-128, L139-141) | ○ |
| C-017 | loadModuleがonDependencyを依存ファイル毎に呼出 | E-01 (L148-150) | ○ |
| C-018 | loadModuleがdefault exportを返却 | E-01 (L134) | ○ |
| C-019 | loadModuleがnamed exportを返却 | E-01 (L134) | ○ |
| C-020 | loadModuleがcustomJsResolver使用 | E-01 (L123, L249-262) | ○ |
| C-021 | loadStylesheetがCSSファイルを読込 | E-01 (L158-175) | ○ |
| C-022 | loadStylesheetが存在しないファイルでエラー | E-01 (L165) | ○ |
| C-023 | loadStylesheetがonDependencyを呼出 | E-01 (L167) | ○ |
| C-024 | importModuleが標準importでモジュールロード | E-01 (L181-195) | △ |
| C-025 | importModuleがjitiフォールバック | E-01 (L191-194) | △ |
| C-026 | importModuleがglobalThis.__tw_loadを優先使用 | E-01 (L182-187) | ○ |
| C-027 | resolveCssIdがCSS IDを解決 | E-01 (L207-227) | ○ |
| C-028 | resolveCssIdがカスタムリゾルバを優先使用 | E-01 (L219-224) | ○ |
| C-029 | resolveCssIdがglobalThis.__tw_resolveを最優先 | E-01 (L212-217) | ○ |
| C-030 | resolveJsIdがJS IDを解決 | E-01 (L245-265) | ○ |
| C-031 | resolveJsIdがCJSリゾルバにフォールバック | E-01 (L264) | ○ |
| C-032 | resolveJsIdがカスタムリゾルバを優先使用 | E-01 (L257-262) | ○ |
| C-033 | resolveJsIdがglobalThis.__tw_resolveを最優先 | E-01 (L250-255) | ○ |
| C-034 | runResolverがリゾルバを正しく実行 | E-01 (L267-278) | ○ |
| C-035 | runResolverがエラー時にreject | E-01 (L274) | ○ |
| C-036 | __unstable__loadDesignSystemがデザインシステムロード | E-01 (L106-116) | ○ |
| C-037 | resolveDebugがundefinedでfalse | E-02 (L8-10) | ○ |
| C-038 | resolveDebugが'true'でtrue | E-02 (L13) | ○ |
| C-039 | resolveDebugが'1'でtrue | E-02 (L13) | ○ |
| C-040 | resolveDebugが'false'でfalse | E-02 (L16) | ○ |
| C-041 | resolveDebugが'0'でfalse | E-02 (L16) | ○ |
| C-042 | resolveDebugが'*'でtrue | E-02 (L27-29) | ○ |
| C-043 | resolveDebugが'tailwindcss'でtrue | E-02 (L39-41) | ○ |
| C-044 | resolveDebugがカンマ区切りでtailwindcss含みtrue | E-02 (L31, L39-41) | ○ |
| C-045 | resolveDebugが'-tailwindcss'でfalse | E-02 (L34-36) | ○ |
| C-046 | resolveDebugが'-tailwindcss,other'でfalse | E-02 (L31, L34-36) | ○ |
| C-047 | resolveDebugが無関係プロジェクトでfalse | E-02 (L43) | ○ |
| C-048 | resolveDebugがboolean trueでtrue | E-02 (L4-6) | ○ |
| C-049 | resolveDebugがboolean falseでfalse | E-02 (L4-6) | ○ |
| C-050 | resolveDebugがサブタイプ指定でtrue | E-02 (L31, L39-41) | ○ |
| C-051 | getModuleDependenciesが依存なしファイルで自身を返却 | E-03 (L95-106) | ○ |
| C-052 | getModuleDependenciesが再帰的に依存トレース | E-03 (L51-87, L95-106) | ○ |
| C-053 | getModuleDependenciesがrequire文をトレース | E-03 (L5-10) | ○ |
| C-054 | getModuleDependenciesが循環依存で無限ループしない | E-03 (L63) | ○ |
| C-055 | getModuleDependenciesが非相対パスを除外 | E-03 (L80-81) | ○ |
| C-056 | getModuleDependenciesが存在しないファイルで空 | E-03 (L60) | ○ |
| C-057 | getModuleDependenciesがexport...from文もトレース | E-03 (L8) | ○ |
| C-058 | resolveWithExtensionが.ts拡張子で解決 | E-03 (L26-49) | ○ |
| C-059 | resolveWithExtensionがindex.tsで解決 | E-03 (L36-46) | ○ |
| C-060 | resolveWithExtensionが見つからずnull | E-03 (L48) | ○ |
| C-061 | resolveWithExtensionがJS解決順序で動作 | E-03 (L23, L58) | ○ |
| C-062 | resolveWithExtensionがTS解決順序で動作 | E-03 (L24, L58) | ○ |
| C-063 | traceDependenciesがESM import文を解析 | E-03 (L6-7) | ○ |
| C-064 | traceDependenciesがCJS require文を解析 | E-03 (L9) | ○ |
| C-065 | optimize関数が有効なCSSを最適化 | E-04 (L29-143) | ○ |
| C-066 | optimize関数がminify=trueで圧縮 | E-04 (L37) | ○ |
| C-067 | optimize関数がminify=falseで非圧縮 | E-04 (L37) | ○ |
| C-068 | optimize関数がソースマップ付きで処理 | E-04 (L38-39) | ○ |
| C-069 | optimize関数がソースマップなしでundefined | E-04 (L38) | ○ |
| C-070 | optimize関数がネストCSS展開 | E-04 (L46) | ○ |
| C-071 | optimize関数がmedia not修正 | E-04 (L124) | ○ |
| C-072 | optimize関数がfile指定で動作 | E-04 (L31) | ○ |
| C-073 | optimize関数がerrorRecoveryで継続 | E-04 (L54) | △ |
| C-074 | optimize関数がVue擬似クラス警告フィルタ | E-04 (L63-71) | ○ |
| C-075 | optimize関数が空CSS入力 | E-04 (L29-143) | ○ |
| C-076 | optimize関数が隣接ルールマージ（2回最適化） | E-04 (L58-60, L116) | ○ |
| C-077 | optimize関数がソースマップ再マッピング | E-04 (L129-135) | ○ |
| C-078 | dim関数がANSIコード付与 | E-04 (L145-147) | ○ |
| C-079 | yellow関数がANSIコード付与 | E-04 (L149-151) | ○ |
| C-080 | rewriteUrlsがurl()のURL書き換え | E-05 (L37-93) | ○ |
| C-081 | rewriteUrlsがurl/image-set未含有で早期リターン | E-05 (L46-48) | ○ |
| C-082 | rewriteUrlsがimage-set()のURL書き換え | E-05 (L75-84) | ○ |
| C-083 | rewriteUrlsが絶対パスURLをスキップ | E-05 (L55) | ○ |
| C-084 | rewriteUrlsが同一ディレクトリに./を付与 | E-05 (L61-66) | ○ |
| C-085 | isDataUrlがdata URLでtrue | E-05 (L18, L27) | ○ |
| C-086 | isDataUrlが非data URLでfalse | E-05 (L18, L27) | ○ |
| C-087 | isDataUrlが大文字DATA:でもtrue | E-05 (L18: `/i`フラグ) | △ |
| C-088 | isExternalUrlがhttpsでtrue | E-05 (L19, L28) | ○ |
| C-089 | isExternalUrlがhttpでtrue | E-05 (L19, L28) | ○ |
| C-090 | isExternalUrlがプロトコル相対URLでtrue | E-05 (L19, L28) | ○ |
| C-091 | isExternalUrlが相対パスでfalse | E-05 (L19, L28) | ○ |
| C-092 | skipUrlReplacerが外部URLでtrue | E-05 (L153-160) | ○ |
| C-093 | skipUrlReplacerがdata URLでtrue | E-05 (L153-160) | ○ |
| C-094 | skipUrlReplacerが関数呼び出しでtrue | E-05 (L158) | ○ |
| C-095 | skipUrlReplacerが相対パスでfalse | E-05 (L153-160) | ○ |
| C-096 | skipUrlReplacerが特殊文字先頭でtrue | E-05 (L157) | ○ |
| C-097 | doUrlReplaceがダブルクォートURLを置換 | E-05 (L119-151) | ○ |
| C-098 | doUrlReplaceがシングルクォートURLを置換 | E-05 (L127-129) | ○ |
| C-099 | doUrlReplaceがクォートなしURLを置換 | E-05 (L119-151) | ○ |
| C-100 | doUrlReplaceがスキップ対象をそのまま返却 | E-05 (L132-134) | ○ |
| C-101 | doUrlReplaceがスペース含むURLにクォート付与 | E-05 (L138-139) | ○ |
| C-102 | doUrlReplaceがシングルクォートURLでシングルクォート含み時にダブルクォートに切替 | E-05 (L143-145) | ○ |
| C-103 | doUrlReplaceがダブルクォートURLでダブルクォート含み時にエスケープ | E-05 (L147-149) | ○ |
| C-104 | parseSrcsetが単一候補パース | E-05 (L174-186) | ○ |
| C-105 | parseSrcsetが複数候補パース | E-05 (L174-186) | ○ |
| C-106 | parseSrcsetが空文字列で空配列 | E-05 (L174-186) | ○ |
| C-107 | parseSrcsetがdescriptor省略でパース | E-05 (L174-186) | ○ |
| C-108 | parseSrcsetがエスケープ空白を正規化 | E-05 (L177) | ○ |
| C-109 | joinSrcsetがカンマ区切り結合 | E-05 (L188-190) | ○ |
| C-110 | joinSrcsetがdescriptor省略でURLのみ | E-05 (L189) | ○ |
| C-111 | joinSrcsetが空配列で空文字列 | E-05 (L188-190) | ○ |
| C-112 | asyncReplaceが非同期置換 | E-05 (L192-207) | ○ |
| C-113 | asyncReplaceがマッチなしで元文字列返却 | E-05 (L192-207) | ○ |
| C-114 | asyncReplaceが空入力で空返却 | E-05 (L192-207) | ○ |
| C-115 | asyncReplaceが複数マッチで全て置換 | E-05 (L200-204: whileループ) | △ |
| C-116 | toSourceMapが文字列からSourceMap生成 | E-06 (L45-60) | ○ |
| C-117 | toSourceMapがDecodedSourceMapからSourceMap生成 | E-06 (L45-60) | ○ |
| C-118 | toSourceMapのinlineがbase64 data URI | E-06 (L54-56) | ○ |
| C-119 | toSourceMapのcommentがURL付きコメント | E-06 (L48-49) | ○ |
| C-120 | serializeSourceMapがマッピングをシリアライズ | E-06 (L12-43) | ○ |
| C-121 | serializeSourceMapがnull sourceでunknownラベル | E-06 (L24) | ○ |
| C-122 | serializeSourceMapが空マッピングで空ソースマップ | E-06 (L12-43) | ○ |
| C-123 | serializeSourceMapが複数null sourceで連番unknownラベル | E-06 (L15, L24) | ○ |
| C-124 | normalizePathがUnixパスをそのまま返却 | E-07 (L33-47) | ○ |
| C-125 | normalizePathがWindowsパスを正規化 | E-07 (L33-47, L4-31) | ○ |
| C-126 | normalizePathがUNCパスを正規化 | E-07 (L38-44) | ○ |
| C-127 | normalizePathが\\\\始まりで//を保証 | E-07 (L38-44) | ○ |
| C-128 | normalizePathBaseが'/'をそのまま返却 | E-07 (L9) | ○ |
| C-129 | normalizePathBaseが'\\'を'/'で返却 | E-07 (L9) | ○ |
| C-130 | normalizePathBaseが空文字列をそのまま返却 | E-07 (L12) | ○ |
| C-131 | normalizePathBaseが1文字をそのまま返却 | E-07 (L12) | ○ |
| C-132 | normalizePathBaseが非文字列でTypeError | E-07 (L5-7) | ○ |
| C-133 | normalizePathBaseが末尾スラッシュ除去 | E-07 (L27-29) | ○ |
| C-134 | normalizePathBaseがstripTrailing=falseで保持 | E-07 (L27) | ○ |
| C-135 | normalizePathBaseがWin32名前空間パス処理 | E-07 (L18-24) | ○ |
| C-136 | normalizePathBaseがWin32デバイスパス処理 | E-07 (L19-20: ch === '?'  or ch === '.') | ○ |
| C-137 | normalizePathBaseが連続スラッシュ正規化 | E-07 (L26) | ○ |
| C-138 | Instrumentation.hitがカウント増加 | E-08 (L19-21) | ○ |
| C-139 | Instrumentation.hitが累積カウント | E-08 (L19-21) | ○ |
| C-140 | Instrumentation.startがタイマー開始・ヒットカウント増加 | E-08 (L23-33) | ○ |
| C-141 | Instrumentation.endがタイマー停止・経過時間記録 | E-08 (L35-49) | ○ |
| C-142 | Instrumentation.endがラベル不一致でエラー | E-08 (L38-44) | ○ |
| C-143 | Instrumentationのネストstart/endが名前空間付き記録 | E-08 (L24-26) | ○ |
| C-144 | Instrumentation.resetが全データクリア | E-08 (L51-55) | ○ |
| C-145 | Instrumentation.reportがflushに文字列渡し | E-08 (L57-100) | ○ |
| C-146 | Instrumentation.reportが未終了タイマー自動終了 | E-08 (L62-64) | ○ |
| C-147 | Instrumentation.report後にリセット | E-08 (L99) | ○ |
| C-148 | Instrumentation.reportがhitのみでHitsセクション出力 | E-08 (L66-75) | ○ |
| C-149 | Symbol.disposeがDEBUG=trueでreport | E-08 (L102-104) | ○ |
| C-150 | Symbol.disposeがDEBUG=falseでスキップ | E-08 (L103) | ○ |
| C-151 | Instrumentationデフォルトflush | E-08 (L16) | ○ |
| C-152 | Instrumentationカスタムflush | E-08 (L16) | ○ |
| C-153 | instrumentation.ts dim関数がANSIコード付与 | E-08 (L107-109) | ○ |
| C-154 | instrumentation.ts blue関数がANSIコード付与 | E-08 (L111-113) | ○ |
| C-155 | clearRequireCacheがキャッシュ削除 | E-09 (L1-5) | ○ |
| C-156 | clearRequireCacheが複数ファイル削除 | E-09 (L2-3) | ○ |
| C-157 | clearRequireCacheが空配列で正常動作 | E-09 (L2) | ○ |
| C-158 | clearRequireCacheが存在しないキーで正常動作 | E-09 (L3) | ○ |
| C-159 | ESM resolve hookが自身のURLスキップ | E-10 (L6) | ○ |
| C-160 | ESM resolve hookがビルトインスキップ | E-10 (L7) | ○ |
| C-161 | ESM resolve hookがparentURL不在スキップ | E-10 (L8) | ○ |
| C-162 | ESM resolve hookがid伝播 | E-10 (L10-21) | ○ |
| C-163 | ESM resolve hookがidなしでそのまま返却 | E-10 (L12-13) | ○ |

## 4) 不足情報（Unknown / Missing）
- C-024, C-025: `importModule`関数内のjitiライブラリの詳細な動作仕様は外部ライブラリ（jiti）に依存しており、実際の動作確認にはjiti自体のテストまたは統合テストが必要
  - 候補：jitiのドキュメント / jitiのテストコード / 統合テスト
- C-073: `optimize`関数のerrorRecoveryの具体的な動作はlightningcssライブラリに依存しており、不正CSS入力時の正確な挙動は外部仕様に依存する
  - 候補：lightningcss公式ドキュメント / lightningcssテストコード
- C-087: `isDataUrl`の正規表現`/^\s*data:/i`はiフラグで大文字小文字無視であることはコードから読み取れるが、境界的なエッジケースとして実行確認が推奨される
  - 候補：正規表現仕様の確認 / 実行テスト
- C-115: `asyncReplace`関数のwhileループによる複数マッチ処理は、正規表現にgフラグがない場合のre.execの挙動（remainingを更新する独自ロジック）に依存しており、正規表現パターンの種類によって結果が異なる可能性がある
  - 候補：asyncReplace関数の実装詳細の確認 / 実行テスト

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - env.ts (resolveDebug): ロジックが単純で全分岐がコードから明確
- 0: 低リスク - normalize-path.ts: インライン化されたOSSライブラリで動作が十分検証済み
- 0: 低リスク - require-cache.cts: 単純なdelete操作のみ
- 0: 低リスク - instrumentation.ts: 計測用クラスでビジネスロジックへの影響なし
- 0: 低リスク - source-maps.ts: source-map-jsライブラリのラッパーで比較的単純
- 0: 低リスク - esm-cache.loader.mts: ESMフック仕様に依存するが、ロジック自体は単純
- 1: 中リスク - compile.ts: 外部ライブラリ（EnhancedResolve, jiti）への依存が多く、モック設計が重要
- 1: 中リスク - optimize.ts: lightningcssへの依存が多く、CSSの変換結果は外部ライブラリのバージョンに依存
- 1: 中リスク - urls.ts: 複雑な正規表現による文字列処理が多数あり、エッジケースの網羅が重要
- 1: 中リスク - get-module-dependencies.ts: ファイルシステムアクセスを伴う再帰処理でモック設計が重要

## 6) レビュアーチェックリスト（最小）
- [ ] compile.ts: loadModule/loadStylesheetのモック戦略が適切か確認（外部ファイルシステム・モジュール解決に依存）
- [ ] compile.ts: globalThis.__tw_load/__tw_resolveの存在チェックテストケースが十分か確認
- [ ] compile.ts: importModuleのjitiフォールバック動作の検証方法を確認
- [ ] optimize.ts: lightningcssのバージョン変更による出力差異を考慮したテスト設計になっているか確認
- [ ] optimize.ts: MagicStringによる'@media not ('置換とソースマップ再マッピングのテストが正しいか確認
- [ ] urls.ts: 正規表現のエッジケース（マルチバイト文字、非ASCII文字のURL等）が網羅されているか確認
- [ ] urls.ts: doUrlReplaceのクォート切り替え・エスケープロジックが全パターン網羅されているか確認
- [ ] get-module-dependencies.ts: 循環依存・深いネストの依存チェーンのテストケースが十分か確認
- [ ] instrumentation.ts: process.hrtime.bigint()のモック方法が適切か確認
- [ ] esm-cache.loader.mts: Node.js ESM Loaderフックのテスト方法（実際のモジュール解決チェーンのモック）が適切か確認
