{
  "meta": {
    "format": 3,
    "version": "7.11.0",
    "timestamp": "2025-11-05T00:56:58.689936",
    "branch_coverage": false,
    "show_contexts": false
  },
  "files": {
    "__init__.py": {
      "executed_lines": [0],
      "summary": {
        "covered_lines": 0,
        "num_statements": 0,
        "percent_covered": 100.0,
        "percent_covered_display": "100",
        "missing_lines": 0,
        "excluded_lines": 0
      },
      "missing_lines": [],
      "excluded_lines": [],
      "functions": {
        "": {
          "executed_lines": [],
          "summary": {
            "covered_lines": 0,
            "num_statements": 0,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      },
      "classes": {
        "": {
          "executed_lines": [],
          "summary": {
            "covered_lines": 0,
            "num_statements": 0,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      }
    },
    "nextjs_init.py": {
      "executed_lines": [
        2, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 44, 45, 46, 47, 48, 49, 50, 51,
        53, 55, 56, 58, 59, 63, 64, 66, 68, 69, 71, 73, 76, 79, 81, 82, 83, 84,
        85, 87, 88, 89, 92, 93, 94, 96, 98, 101, 102, 105, 106, 109, 110, 112,
        113, 115, 117, 120, 121, 124, 125, 127, 129, 132, 133, 138, 139, 142,
        143, 144, 149, 150, 151, 156, 157, 158, 159, 161, 162, 165, 166, 169,
        170, 172, 174, 180, 182, 183, 192, 193, 194, 196, 197, 198, 199, 201,
        215, 217, 221, 222, 240, 255, 257, 267, 269, 282, 284, 306, 308, 310,
        312, 313, 328, 342, 344, 352, 354, 359, 361, 379, 381, 416, 418, 460,
        462, 467, 469, 479, 481, 482, 483, 484, 485, 486, 487, 489, 490, 491,
        492, 494, 495, 496, 497, 498, 499, 500, 501, 508, 546
      ],
      "summary": {
        "covered_lines": 146,
        "num_statements": 162,
        "percent_covered": 90.12345679012346,
        "percent_covered_display": "90",
        "missing_lines": 16,
        "excluded_lines": 0
      },
      "missing_lines": [
        503, 504, 505, 510, 513, 514, 517, 520, 523, 524, 525, 526, 530, 532,
        543, 547
      ],
      "excluded_lines": [],
      "functions": {
        "NextJSInitializer.__init__": {
          "executed_lines": [44, 45, 46, 47, 48, 49, 50, 51],
          "summary": {
            "covered_lines": 8,
            "num_statements": 8,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer.validate_name": {
          "executed_lines": [55, 56, 58, 59, 63, 64],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer.check_directory": {
          "executed_lines": [68, 69],
          "summary": {
            "covered_lines": 2,
            "num_statements": 2,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer.create_directory_structure": {
          "executed_lines": [
            73, 76, 79, 81, 82, 83, 84, 85, 87, 88, 89, 92, 93, 94
          ],
          "summary": {
            "covered_lines": 14,
            "num_statements": 14,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._create_app_router_files": {
          "executed_lines": [98, 101, 102, 105, 106, 109, 110, 112, 113],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._create_pages_router_files": {
          "executed_lines": [117, 120, 121, 124, 125],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer.create_config_files": {
          "executed_lines": [
            129, 132, 133, 138, 139, 142, 143, 144, 149, 150, 151, 156, 157,
            158, 159, 161, 162, 165, 166, 169, 170
          ],
          "summary": {
            "covered_lines": 21,
            "num_statements": 21,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_package_json": {
          "executed_lines": [
            174, 180, 182, 183, 192, 193, 194, 196, 197, 198, 199, 201
          ],
          "summary": {
            "covered_lines": 12,
            "num_statements": 12,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_layout_content": {
          "executed_lines": [217, 221, 222, 240],
          "summary": {
            "covered_lines": 4,
            "num_statements": 4,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_page_content": {
          "executed_lines": [257],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_next_config": {
          "executed_lines": [269],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_tsconfig": {
          "executed_lines": [284],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_eslint_config": {
          "executed_lines": [308],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_tailwind_config": {
          "executed_lines": [312, 313, 328],
          "summary": {
            "covered_lines": 3,
            "num_statements": 3,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_postcss_config": {
          "executed_lines": [344],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_tailwind_globals": {
          "executed_lines": [354],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_basic_globals": {
          "executed_lines": [361],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_gitignore": {
          "executed_lines": [381],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_readme": {
          "executed_lines": [418],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_app_content": {
          "executed_lines": [462],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer._get_index_content": {
          "executed_lines": [469],
          "summary": {
            "covered_lines": 1,
            "num_statements": 1,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "NextJSInitializer.initialize": {
          "executed_lines": [
            481, 482, 483, 484, 485, 486, 487, 489, 490, 491, 492, 494, 495,
            496, 497, 498, 499, 500, 501
          ],
          "summary": {
            "covered_lines": 19,
            "num_statements": 22,
            "percent_covered": 86.36363636363636,
            "percent_covered_display": "86",
            "missing_lines": 3,
            "excluded_lines": 0
          },
          "missing_lines": [503, 504, 505],
          "excluded_lines": []
        },
        "main": {
          "executed_lines": [],
          "summary": {
            "covered_lines": 0,
            "num_statements": 12,
            "percent_covered": 0.0,
            "percent_covered_display": "0",
            "missing_lines": 12,
            "excluded_lines": 0
          },
          "missing_lines": [
            510, 513, 514, 517, 520, 523, 524, 525, 526, 530, 532, 543
          ],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            2, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 53, 66, 71, 96, 115, 127,
            172, 215, 255, 267, 282, 306, 310, 342, 352, 359, 379, 416, 460,
            467, 479, 508, 546
          ],
          "summary": {
            "covered_lines": 32,
            "num_statements": 33,
            "percent_covered": 96.96969696969697,
            "percent_covered_display": "97",
            "missing_lines": 1,
            "excluded_lines": 0
          },
          "missing_lines": [547],
          "excluded_lines": []
        }
      },
      "classes": {
        "NextJSInitializer": {
          "executed_lines": [
            44, 45, 46, 47, 48, 49, 50, 51, 55, 56, 58, 59, 63, 64, 68, 69, 73,
            76, 79, 81, 82, 83, 84, 85, 87, 88, 89, 92, 93, 94, 98, 101, 102,
            105, 106, 109, 110, 112, 113, 117, 120, 121, 124, 125, 129, 132,
            133, 138, 139, 142, 143, 144, 149, 150, 151, 156, 157, 158, 159,
            161, 162, 165, 166, 169, 170, 174, 180, 182, 183, 192, 193, 194,
            196, 197, 198, 199, 201, 217, 221, 222, 240, 257, 269, 284, 308,
            312, 313, 328, 344, 354, 361, 381, 418, 462, 469, 481, 482, 483,
            484, 485, 486, 487, 489, 490, 491, 492, 494, 495, 496, 497, 498,
            499, 500, 501
          ],
          "summary": {
            "covered_lines": 114,
            "num_statements": 117,
            "percent_covered": 97.43589743589743,
            "percent_covered_display": "97",
            "missing_lines": 3,
            "excluded_lines": 0
          },
          "missing_lines": [503, 504, 505],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            2, 8, 9, 10, 11, 12, 13, 14, 17, 18, 20, 53, 66, 71, 96, 115, 127,
            172, 215, 255, 267, 282, 306, 310, 342, 352, 359, 379, 416, 460,
            467, 479, 508, 546
          ],
          "summary": {
            "covered_lines": 32,
            "num_statements": 45,
            "percent_covered": 71.11111111111111,
            "percent_covered_display": "71",
            "missing_lines": 13,
            "excluded_lines": 0
          },
          "missing_lines": [
            510, 513, 514, 517, 520, 523, 524, 525, 526, 530, 532, 543, 547
          ],
          "excluded_lines": []
        }
      }
    },
    "tests/test_nextjs_init.py": {
      "executed_lines": [
        1, 3, 4, 5, 7, 10, 12, 15, 16, 18, 20, 25, 26, 27, 28, 29, 30, 32, 34,
        36, 37, 41, 43, 45, 52, 53, 58, 59, 61, 63, 64, 66, 71, 72, 74, 76, 77,
        83, 86, 87, 88, 89, 92, 93, 94, 96, 98, 99, 105, 108, 109, 110, 112,
        114, 122, 124, 125, 126, 129, 130, 131, 132, 135, 136, 137, 140, 141,
        142, 145, 148, 150, 152, 159, 161, 162, 163, 164, 165, 167, 169, 175,
        177, 178, 179, 180, 182, 184, 190, 192, 193, 194, 196, 198, 205, 207,
        208, 209, 211, 213, 220, 222, 223, 225, 227, 232, 234, 235, 236, 237,
        239, 241, 246, 248, 249, 250, 252, 254, 255, 263, 264, 267, 268, 269,
        270, 271, 272, 273, 274, 277, 278, 279, 281, 283, 284, 292, 295, 298,
        299, 302, 303, 304, 306, 308, 309, 315, 318, 319
      ],
      "summary": {
        "covered_lines": 145,
        "num_statements": 145,
        "percent_covered": 100.0,
        "percent_covered_display": "100",
        "missing_lines": 0,
        "excluded_lines": 0
      },
      "missing_lines": [],
      "excluded_lines": [],
      "functions": {
        "TestNextJSInitializer.test_init_with_defaults": {
          "executed_lines": [20, 25, 26, 27, 28, 29, 30],
          "summary": {
            "covered_lines": 7,
            "num_statements": 7,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_validate_name_valid": {
          "executed_lines": [34, 36, 37, 41],
          "summary": {
            "covered_lines": 4,
            "num_statements": 4,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_validate_name_invalid": {
          "executed_lines": [45, 52, 53, 58, 59],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_check_directory_exists": {
          "executed_lines": [63, 64, 66, 71, 72],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_create_directory_structure_app_router": {
          "executed_lines": [76, 77, 83, 86, 87, 88, 89, 92, 93, 94],
          "summary": {
            "covered_lines": 10,
            "num_statements": 10,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_create_directory_structure_with_src": {
          "executed_lines": [98, 99, 105, 108, 109, 110],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_package_json_generation": {
          "executed_lines": [
            114, 122, 124, 125, 126, 129, 130, 131, 132, 135, 136, 137, 140,
            141, 142, 145, 148
          ],
          "summary": {
            "covered_lines": 17,
            "num_statements": 17,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_tsconfig_generation": {
          "executed_lines": [152, 159, 161, 162, 163, 164, 165],
          "summary": {
            "covered_lines": 7,
            "num_statements": 7,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_layout_content_typescript": {
          "executed_lines": [169, 175, 177, 178, 179, 180],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_layout_content_javascript": {
          "executed_lines": [184, 190, 192, 193, 194],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_tailwind_config_typescript": {
          "executed_lines": [198, 205, 207, 208, 209],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_tailwind_config_javascript": {
          "executed_lines": [213, 220, 222, 223],
          "summary": {
            "covered_lines": 4,
            "num_statements": 4,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_gitignore_generation": {
          "executed_lines": [227, 232, 234, 235, 236, 237],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_readme_generation": {
          "executed_lines": [241, 246, 248, 249, 250],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_create_config_files": {
          "executed_lines": [
            254, 255, 263, 264, 267, 268, 269, 270, 271, 272, 273, 274, 277,
            278, 279
          ],
          "summary": {
            "covered_lines": 15,
            "num_statements": 15,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_full_initialization": {
          "executed_lines": [283, 284, 292, 295, 298, 299, 302, 303, 304],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestNextJSInitializer.test_pages_router_structure": {
          "executed_lines": [308, 309, 315, 318, 319],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            1, 3, 4, 5, 7, 10, 12, 15, 16, 18, 32, 43, 61, 74, 96, 112, 150,
            167, 182, 196, 211, 225, 239, 252, 281, 306
          ],
          "summary": {
            "covered_lines": 24,
            "num_statements": 24,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      },
      "classes": {
        "TestNextJSInitializer": {
          "executed_lines": [
            20, 25, 26, 27, 28, 29, 30, 34, 36, 37, 41, 45, 52, 53, 58, 59, 63,
            64, 66, 71, 72, 76, 77, 83, 86, 87, 88, 89, 92, 93, 94, 98, 99, 105,
            108, 109, 110, 114, 122, 124, 125, 126, 129, 130, 131, 132, 135,
            136, 137, 140, 141, 142, 145, 148, 152, 159, 161, 162, 163, 164,
            165, 169, 175, 177, 178, 179, 180, 184, 190, 192, 193, 194, 198,
            205, 207, 208, 209, 213, 220, 222, 223, 227, 232, 234, 235, 236,
            237, 241, 246, 248, 249, 250, 254, 255, 263, 264, 267, 268, 269,
            270, 271, 272, 273, 274, 277, 278, 279, 283, 284, 292, 295, 298,
            299, 302, 303, 304, 308, 309, 315, 318, 319
          ],
          "summary": {
            "covered_lines": 121,
            "num_statements": 121,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            1, 3, 4, 5, 7, 10, 12, 15, 16, 18, 32, 43, 61, 74, 96, 112, 150,
            167, 182, 196, 211, 225, 239, 252, 281, 306
          ],
          "summary": {
            "covered_lines": 24,
            "num_statements": 24,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      }
    },
    "tests/test_turborepo_migrate.py": {
      "executed_lines": [
        1, 3, 4, 5, 7, 10, 12, 15, 16, 19, 29, 32, 33, 35, 36, 37, 53, 56, 57,
        59, 60, 61, 75, 77, 80, 81, 83, 85, 91, 92, 93, 95, 97, 98, 100, 102,
        104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 125,
        127, 129, 130, 132, 133, 134, 136, 139, 145, 150, 151, 153, 154, 156,
        158, 159, 160, 162, 164, 165, 166, 168, 170, 171, 172, 174, 177, 178,
        179, 182, 183, 185, 187, 188, 189, 191, 194, 195, 196, 198, 200, 201,
        202, 204, 205, 207, 208, 211, 212, 213, 216, 217, 220, 226, 228, 229,
        230, 232, 235, 236, 239, 240, 241, 244, 246, 247, 248, 250, 251, 252,
        254, 256, 257, 258, 259, 260, 263, 264, 266, 268, 269, 270, 272, 273,
        274, 276, 279, 282, 283, 285, 287, 288, 289, 291, 292, 293, 295, 298,
        301, 302, 303, 304, 307, 308, 309, 311, 313, 314, 317, 320, 321, 322,
        324, 326, 327, 330, 332, 333, 334, 335, 336, 339, 340, 341, 342, 344,
        346, 351, 352, 354, 355, 357, 358, 359, 360, 362, 365, 370, 373, 374
      ],
      "summary": {
        "covered_lines": 188,
        "num_statements": 188,
        "percent_covered": 100.0,
        "percent_covered_display": "100",
        "missing_lines": 0,
        "excluded_lines": 0
      },
      "missing_lines": [],
      "excluded_lines": [],
      "functions": {
        "mock_monorepo": {
          "executed_lines": [
            19, 29, 32, 33, 35, 36, 37, 53, 56, 57, 59, 60, 61, 75, 77
          ],
          "summary": {
            "covered_lines": 15,
            "num_statements": 15,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_init": {
          "executed_lines": [85, 91, 92, 93],
          "summary": {
            "covered_lines": 4,
            "num_statements": 4,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_validate_path_exists": {
          "executed_lines": [97, 98],
          "summary": {
            "covered_lines": 2,
            "num_statements": 2,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_validate_path_not_exists": {
          "executed_lines": [102, 104, 105],
          "summary": {
            "covered_lines": 3,
            "num_statements": 3,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_validate_path_not_directory": {
          "executed_lines": [109, 110, 112, 114, 115],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_validate_path_no_package_json": {
          "executed_lines": [119, 120, 122, 124, 125],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_analyze_workspace_npm": {
          "executed_lines": [129, 130, 132, 133, 134],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_analyze_workspace_pnpm": {
          "executed_lines": [139, 145, 150, 151, 153, 154],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_discover_packages": {
          "executed_lines": [158, 159, 160, 162, 164, 165, 166],
          "summary": {
            "covered_lines": 7,
            "num_statements": 7,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_analyze_scripts": {
          "executed_lines": [170, 171, 172, 174, 177, 178, 179, 182, 183],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_infer_build_outputs": {
          "executed_lines": [187, 188, 189, 191, 194, 195, 196],
          "summary": {
            "covered_lines": 7,
            "num_statements": 7,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_generate_turbo_config": {
          "executed_lines": [
            200, 201, 202, 204, 205, 207, 208, 211, 212, 213, 216, 217, 220
          ],
          "summary": {
            "covered_lines": 13,
            "num_statements": 13,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_update_root_package_json": {
          "executed_lines": [228, 229, 230, 232, 235, 236, 239, 240, 241],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_generate_migration_report": {
          "executed_lines": [
            246, 247, 248, 250, 251, 252, 254, 256, 257, 258, 259, 260, 263, 264
          ],
          "summary": {
            "covered_lines": 14,
            "num_statements": 14,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_write_files_dry_run": {
          "executed_lines": [268, 269, 270, 272, 273, 274, 276, 279, 282, 283],
          "summary": {
            "covered_lines": 10,
            "num_statements": 10,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_write_files_actual": {
          "executed_lines": [
            287, 288, 289, 291, 292, 293, 295, 298, 301, 302, 303, 304, 307,
            308, 309
          ],
          "summary": {
            "covered_lines": 15,
            "num_statements": 15,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_full_migration_dry_run": {
          "executed_lines": [313, 314, 317, 320, 321, 322],
          "summary": {
            "covered_lines": 6,
            "num_statements": 6,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_full_migration_actual": {
          "executed_lines": [
            326, 327, 330, 332, 333, 334, 335, 336, 339, 340, 341, 342
          ],
          "summary": {
            "covered_lines": 12,
            "num_statements": 12,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_parse_pnpm_workspace": {
          "executed_lines": [346, 351, 352, 354, 355, 357, 358, 359, 360],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TestTurborepoMigrator.test_monorepo_without_workspaces": {
          "executed_lines": [365, 370, 373, 374],
          "summary": {
            "covered_lines": 4,
            "num_statements": 4,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            1, 3, 4, 5, 7, 10, 12, 15, 16, 80, 81, 83, 95, 100, 107, 117, 127,
            136, 156, 168, 185, 198, 226, 244, 266, 285, 311, 324, 344, 362
          ],
          "summary": {
            "covered_lines": 28,
            "num_statements": 28,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      },
      "classes": {
        "TestTurborepoMigrator": {
          "executed_lines": [
            85, 91, 92, 93, 97, 98, 102, 104, 105, 109, 110, 112, 114, 115, 119,
            120, 122, 124, 125, 129, 130, 132, 133, 134, 139, 145, 150, 151,
            153, 154, 158, 159, 160, 162, 164, 165, 166, 170, 171, 172, 174,
            177, 178, 179, 182, 183, 187, 188, 189, 191, 194, 195, 196, 200,
            201, 202, 204, 205, 207, 208, 211, 212, 213, 216, 217, 220, 228,
            229, 230, 232, 235, 236, 239, 240, 241, 246, 247, 248, 250, 251,
            252, 254, 256, 257, 258, 259, 260, 263, 264, 268, 269, 270, 272,
            273, 274, 276, 279, 282, 283, 287, 288, 289, 291, 292, 293, 295,
            298, 301, 302, 303, 304, 307, 308, 309, 313, 314, 317, 320, 321,
            322, 326, 327, 330, 332, 333, 334, 335, 336, 339, 340, 341, 342,
            346, 351, 352, 354, 355, 357, 358, 359, 360, 365, 370, 373, 374
          ],
          "summary": {
            "covered_lines": 145,
            "num_statements": 145,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            1, 3, 4, 5, 7, 10, 12, 15, 16, 19, 29, 32, 33, 35, 36, 37, 53, 56,
            57, 59, 60, 61, 75, 77, 80, 81, 83, 95, 100, 107, 117, 127, 136,
            156, 168, 185, 198, 226, 244, 266, 285, 311, 324, 344, 362
          ],
          "summary": {
            "covered_lines": 43,
            "num_statements": 43,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        }
      }
    },
    "turborepo_migrate.py": {
      "executed_lines": [
        2, 8, 9, 10, 11, 12, 13, 16, 17, 19, 33, 34, 35, 36, 37, 39, 41, 42, 44,
        45, 47, 48, 49, 53, 55, 57, 58, 59, 62, 63, 67, 68, 73, 77, 79, 81, 83,
        84, 85, 93, 94, 96, 97, 98, 100, 102, 103, 104, 105, 106, 107, 108, 109,
        110, 111, 112, 113, 115, 117, 120, 122, 123, 124, 126, 127, 128, 130,
        140, 142, 144, 146, 147, 148, 149, 150, 152, 158, 159, 160, 162, 164,
        166, 168, 171, 172, 178, 179, 185, 186, 189, 194, 199, 202, 208, 210,
        212, 214, 215, 218, 219, 220, 222, 223, 224, 225, 228, 230, 232, 234,
        235, 236, 239, 240, 242, 245, 248, 249, 251, 252, 254, 256, 260, 262,
        263, 264, 265, 267, 268, 269, 270, 272, 273, 274, 275, 276, 278, 279,
        280, 281, 282, 283, 285, 286, 287, 288, 290, 291, 292, 293, 294, 295,
        296, 298, 299, 301, 302, 303, 305, 306, 308, 310, 312, 313, 314, 315,
        316, 318, 321, 322, 323, 324, 327, 328, 329, 330, 332, 334, 335, 336,
        337, 339, 340, 341, 343, 344, 345, 347, 348, 350, 351, 352, 354, 355,
        356, 359, 393
      ],
      "summary": {
        "covered_lines": 194,
        "num_statements": 213,
        "percent_covered": 91.07981220657277,
        "percent_covered_display": "91",
        "missing_lines": 19,
        "excluded_lines": 0
      },
      "missing_lines": [
        86, 89, 90, 190, 191, 195, 196, 200, 221, 226, 246, 361, 364, 370, 375,
        382, 384, 390, 394
      ],
      "excluded_lines": [],
      "functions": {
        "TurborepoMigrator.__init__": {
          "executed_lines": [33, 34, 35, 36, 37],
          "summary": {
            "covered_lines": 5,
            "num_statements": 5,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.validate_path": {
          "executed_lines": [41, 42, 44, 45, 47, 48, 49],
          "summary": {
            "covered_lines": 7,
            "num_statements": 7,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.analyze_workspace": {
          "executed_lines": [55, 57, 58, 59, 62, 63, 67, 68, 73, 77],
          "summary": {
            "covered_lines": 10,
            "num_statements": 10,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.discover_packages": {
          "executed_lines": [81, 83, 84, 85, 93, 94, 96, 97, 98],
          "summary": {
            "covered_lines": 9,
            "num_statements": 12,
            "percent_covered": 75.0,
            "percent_covered_display": "75",
            "missing_lines": 3,
            "excluded_lines": 0
          },
          "missing_lines": [86, 89, 90],
          "excluded_lines": []
        },
        "TurborepoMigrator._parse_pnpm_workspace": {
          "executed_lines": [
            102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113
          ],
          "summary": {
            "covered_lines": 12,
            "num_statements": 12,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator._find_packages_by_pattern": {
          "executed_lines": [117, 120, 122, 123, 124, 126, 127, 128, 130],
          "summary": {
            "covered_lines": 9,
            "num_statements": 9,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.analyze_scripts": {
          "executed_lines": [
            142, 144, 146, 147, 148, 149, 150, 152, 158, 159, 160, 162
          ],
          "summary": {
            "covered_lines": 12,
            "num_statements": 12,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.generate_turbo_config": {
          "executed_lines": [
            166, 168, 171, 172, 178, 179, 185, 186, 189, 194, 199, 202, 208
          ],
          "summary": {
            "covered_lines": 13,
            "num_statements": 18,
            "percent_covered": 72.22222222222223,
            "percent_covered_display": "72",
            "missing_lines": 5,
            "excluded_lines": 0
          },
          "missing_lines": [190, 191, 195, 196, 200],
          "excluded_lines": []
        },
        "TurborepoMigrator._infer_build_outputs": {
          "executed_lines": [
            212, 214, 215, 218, 219, 220, 222, 223, 224, 225, 228
          ],
          "summary": {
            "covered_lines": 11,
            "num_statements": 13,
            "percent_covered": 84.61538461538461,
            "percent_covered_display": "85",
            "missing_lines": 2,
            "excluded_lines": 0
          },
          "missing_lines": [221, 226],
          "excluded_lines": []
        },
        "TurborepoMigrator.update_root_package_json": {
          "executed_lines": [
            232, 234, 235, 236, 239, 240, 242, 245, 248, 249, 251, 252, 254
          ],
          "summary": {
            "covered_lines": 13,
            "num_statements": 14,
            "percent_covered": 92.85714285714286,
            "percent_covered_display": "93",
            "missing_lines": 1,
            "excluded_lines": 0
          },
          "missing_lines": [246],
          "excluded_lines": []
        },
        "TurborepoMigrator.generate_migration_report": {
          "executed_lines": [
            260, 262, 263, 264, 265, 267, 268, 269, 270, 272, 273, 274, 275,
            276, 278, 279, 280, 281, 282, 283, 285, 286, 287, 288, 290, 291,
            292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 305, 306, 308
          ],
          "summary": {
            "covered_lines": 39,
            "num_statements": 39,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.write_files": {
          "executed_lines": [
            312, 313, 314, 315, 316, 318, 321, 322, 323, 324, 327, 328, 329, 330
          ],
          "summary": {
            "covered_lines": 14,
            "num_statements": 14,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "TurborepoMigrator.migrate": {
          "executed_lines": [
            334, 335, 336, 337, 339, 340, 341, 343, 344, 345, 347, 348, 350,
            351, 352, 354, 355, 356
          ],
          "summary": {
            "covered_lines": 18,
            "num_statements": 18,
            "percent_covered": 100.0,
            "percent_covered_display": "100",
            "missing_lines": 0,
            "excluded_lines": 0
          },
          "missing_lines": [],
          "excluded_lines": []
        },
        "main": {
          "executed_lines": [],
          "summary": {
            "covered_lines": 0,
            "num_statements": 7,
            "percent_covered": 0.0,
            "percent_covered_display": "0",
            "missing_lines": 7,
            "excluded_lines": 0
          },
          "missing_lines": [361, 364, 370, 375, 382, 384, 390],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            2, 8, 9, 10, 11, 12, 13, 16, 17, 19, 39, 53, 79, 100, 115, 140, 164,
            210, 230, 256, 310, 332, 359, 393
          ],
          "summary": {
            "covered_lines": 22,
            "num_statements": 23,
            "percent_covered": 95.65217391304348,
            "percent_covered_display": "96",
            "missing_lines": 1,
            "excluded_lines": 0
          },
          "missing_lines": [394],
          "excluded_lines": []
        }
      },
      "classes": {
        "TurborepoMigrator": {
          "executed_lines": [
            33, 34, 35, 36, 37, 41, 42, 44, 45, 47, 48, 49, 55, 57, 58, 59, 62,
            63, 67, 68, 73, 77, 81, 83, 84, 85, 93, 94, 96, 97, 98, 102, 103,
            104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 120, 122,
            123, 124, 126, 127, 128, 130, 142, 144, 146, 147, 148, 149, 150,
            152, 158, 159, 160, 162, 166, 168, 171, 172, 178, 179, 185, 186,
            189, 194, 199, 202, 208, 212, 214, 215, 218, 219, 220, 222, 223,
            224, 225, 228, 232, 234, 235, 236, 239, 240, 242, 245, 248, 249,
            251, 252, 254, 260, 262, 263, 264, 265, 267, 268, 269, 270, 272,
            273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 285, 286, 287,
            288, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303,
            305, 306, 308, 312, 313, 314, 315, 316, 318, 321, 322, 323, 324,
            327, 328, 329, 330, 334, 335, 336, 337, 339, 340, 341, 343, 344,
            345, 347, 348, 350, 351, 352, 354, 355, 356
          ],
          "summary": {
            "covered_lines": 172,
            "num_statements": 183,
            "percent_covered": 93.98907103825137,
            "percent_covered_display": "94",
            "missing_lines": 11,
            "excluded_lines": 0
          },
          "missing_lines": [86, 89, 90, 190, 191, 195, 196, 200, 221, 226, 246],
          "excluded_lines": []
        },
        "": {
          "executed_lines": [
            2, 8, 9, 10, 11, 12, 13, 16, 17, 19, 39, 53, 79, 100, 115, 140, 164,
            210, 230, 256, 310, 332, 359, 393
          ],
          "summary": {
            "covered_lines": 22,
            "num_statements": 30,
            "percent_covered": 73.33333333333333,
            "percent_covered_display": "73",
            "missing_lines": 8,
            "excluded_lines": 0
          },
          "missing_lines": [361, 364, 370, 375, 382, 384, 390, 394],
          "excluded_lines": []
        }
      }
    }
  },
  "totals": {
    "covered_lines": 673,
    "num_statements": 708,
    "percent_covered": 95.05649717514125,
    "percent_covered_display": "95",
    "missing_lines": 35,
    "excluded_lines": 0
  }
}
